我希望能够从java中的目录中读取文件,而不必担心会出现内存不足的异常,因为files.listfiles()
和files.list()
只能容纳这么多。我还想知道是否有办法将文件的偏移量存储在目录中,这样我就可以存储该号码而不必再次遍历目录来查找它,这可能吗?
现在我正在使用Jaime Hablutzel的另一个问题的答案来浏览目录,但想知道我是否可以将文件偏移量存储在目录中以便下次直接转到它。
我的想法是将文件名存储在一个文本文件中,然后存储一个计数来记录字符数,直到遇到每个新行,这是另一个文件名,然后使用RandomAccessFile seek()方法将目录转到该行。保存了数。
答案 0 :(得分:1)
好的,我解决了我想做的问题。我通过获取每个文件名的长度+ 1并将其添加到偏移量然后将其写入文件,为文件中存储的每个文件创建了一个偏移量。
11 21 31 41
12 22 32 42
13 23 33 43
14 24 34 44
15 25 35 45
然后当使用randomaccessfile寻找偏移时,我会得到正确的文件名。
public static void readOffsets()
{
try {
File file = new File("indexFile.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("indexFile2.txt");
PrintWriter pw = new PrintWriter(fw);
String line;
int offset = 0;
pw.write(offset + "\n");
while((line = br.readLine()) != null)
{
int length = line.length();
offset += length + 1;
pw.write(offset + "\n");
}
pw.close();
br.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}