我们的想法是获取一个文件,但我不想列出所有文件。我有指定文件夹的地址,但没有名称。
基本上我想要
findFileInFolder(String folderName)---此方法返回随机文件名或在文件夹上创建的最旧文件
有没有人试过这样做?有什么想法可以避免列出数组中的所有文件,然后选择第一个文件吗?
添加了:
以防万一我不清楚(我真的很抱歉我的英语。请原谅我,如果我听起来有先发制人或咄咄逼人,那真的不是我的意图。)该文件不是由人选择的,而是由机器没有询问或显示文件,除了返回带有FileName
的字符串的方法String findFileInFolder(String folderName)
就像我评论ram和处理器的使用一样,因为这是一个辅助进程而不是项目的主要进程,所以如果我必须阅读一千多个文件,它将大大降低我的项目的性能:(
谢谢;)
更新:程序在不同的计算机上运行,所以如果我只是访问目录而不是“思考”阅读哪个文件会很棒。 = d
希望最后更新:对不起打扰你们:)
从我在答案中读到的答案是没有办法的。我的问题是:你认为有什么好的选择而不是做阵列?我的想法是在文本文件中创建一个索引,并只占用第一行。
答案 0 :(得分:1)
您可以查看FileFilter
课程和public File[] listFiles(FileFilter filter)
使用此方法,您可以根据上次修改日期过滤文件,例如。
在旁注中,为什么要避免列出所有文件,以解决性能问题?
答案 1 :(得分:1)
我决定使用这段代码,这不是我想要的,但它现在可以使用。
public static String getFileToCrawl(String directory){
File dir = new File(directory);
String[] children = dir.list();
if (children == null) {
return "";
} else {
int i=0;
String filename = children[i];
while (i<children.length && !filename.contains(".txt")){
i++;
filename = children[i];
}
return filename;
}
}
如果有人喜欢它或者知道改进这段代码的方法,那真的很受欢迎;)如果你想使用它感觉自由:D
答案 2 :(得分:0)
除了列出所有文件并选择所需内容之外,在当前版本的java中无法执行此操作。如果你可以使用java 7,那么有一个FileVisitor类可以在没有列出所有文件的情况下遍历文件夹树。
答案 3 :(得分:-1)
我意识到这是一个旧线程,但这是一个快速而肮脏的方法:
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
public class Shuffle {
public static void main(String[] argv)
throws Exception {
File dir = new File(".");
String[] children = dir.list();
Collections.shuffle(Arrays.asList(children));
System.out.println(children[0]);
}
}