gpt4 book ai didi

java - java读取目录中的文件并存储其在目录中的偏移量

转载 作者:行者123 更新时间:2023-11-30 06:51:41 30 4
gpt4 key购买 nike

我希望能够从 java 中的目录读取文件,而不必担心内存不足异常,因为 files.listfiles()files.list() 只能容纳这么多。我还想知道是否有一种方法可以存储文件在目录中的偏移量,以便我可以存储该数字,而不必再次遍历目录来找到它,这可能吗?

现在我正在使用 Jaime Hablutzel 在另一个问题中的答案来浏览目录,但想知道是否可以将文件偏移量存储在目录中以便下次直接访问它。

我的想法是将文件名存储在一个文本文件中,然后存储一个计数来记录字符数,直到遇到每个新行(这是另一个文件名),然后使用 RandomAccessFileeek() 方法从目录转到该行已保存计数。

How to list 2 million files in a directory in java

最佳答案

好吧,我解决了我想做的事情。我通过获取每个文件名的长度 + 1 并将其添加到偏移量,然后将其写入文件,为存储在文本文件中的每个文件创建了一个偏移量。

 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();
}
}

然后,当使用 randomaccessfile 查找偏移量时,我会得到正确的文件名。

 public static void seekOffset()
{
try {
RandomAccessFile file = new RandomAccessFile("IndexFile.txt", "r");
file.seek(693);
System.out.println(file.readLine());
}
catch(IOException ioe)
{

}
}

关于java - java读取目录中的文件并存储其在目录中的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42654763/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com