将多个文件写入一个文件(如文件系统)

时间:2015-02-03 22:36:32

标签: java

我正在尝试将我创建的多个数据文件存储到一个文件中。每个文件都有一个ID#(0-35),每个文件都包含一些数据。但我想要的是能够将所有文件存储在一个名为'data.xx'的文件中,然后才能访问data.xx文件中的每个文件数据。

public static void pack(int id) {
    try {
        RandomAccessFile raf = new RandomAccessFile("./data/data.xx", "rw");
        ByteArrayInputStream bis = null;
        try {
            byte[] data = toByteArray(id);
            bis = new ByteArrayInputStream(data);
            raf.seek(raf.length());
            System.out.println(raf.length());
            while (bis.read(data, 0, data.length) >= 0) {
                raf.write(data, 0, data.length);
            }
        } finally {
            bis.close();
            raf.close();
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

toByteArray(id)调用单独的数据文件,然后将其放入字节数组中。所有文件似乎都可以写入data.xx文件。我遇到的问题是我不确定如何读取data.xx文件,以便从存储在其中的文件中获取数据。我希望这是有道理的。此外,我不需要任何压缩,我不想为此使用库。

谢谢

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用标记:

<id_0> content of file 0 </id_0>
...
<id_35> content of file 35 </id_35>

您可以像这样编写文件,并使用substring

读取标记内的内容

答案 1 :(得分:0)

我会在输出文件前面加上每个包含文件的开头的偏移量。一个特殊的#34;令牌&#34;是一个不错的主意,但文件可以包含任何字节或字节;使这个想法不现实。那样你的&#34;索引&#34;将以您不能与文件数据混淆的内容终止,因为信息是在您预期任意数据之前发生的......比如,0?如果我误解了这个问题,请评论。