如何在java中从文件夹中获取单个文件?
我的想法是只取一个文件,但我不想列出所有的文件。我有指定文件夹的地址,但没有名称 基本上我想要 FindFileInfo文件夹(String folderName)--此方法返回一个随机文件名或在文件夹上创建的最旧文件 有人试过这样做吗?有没有办法避免在数组中列出所有文件,然后取第一个如何在java中从文件夹中获取单个文件?,java,file,scalability,directory,Java,File,Scalability,Directory,我的想法是只取一个文件,但我不想列出所有的文件。我有指定文件夹的地址,但没有名称 基本上我想要 FindFileInfo文件夹(String folderName)--此方法返回一个随机文件名或在文件夹上创建的最旧文件 有人试过这样做吗?有没有办法避免在数组中列出所有文件,然后取第一个 增加: 以防万一我不清楚(我真的很抱歉我的英语。请原谅我,如果我听起来很强势或咄咄逼人,这真的不是我的意图。)文件不是由人选择的,它是由机器选择的,没有询问或显示文件,除了返回带有文件名的字符串的方法 字符串F
增加: 以防万一我不清楚(我真的很抱歉我的英语。请原谅我,如果我听起来很强势或咄咄逼人,这真的不是我的意图。)文件不是由人选择的,它是由机器选择的,没有询问或显示文件,除了返回带有文件名的字符串的方法 字符串FindFileInfo文件夹(字符串文件夹名称) 我的评论是针对ram和处理器的使用,因为这是一个次要过程,而不是项目的主要过程,因此如果我必须读取1000多个文件,这将大大降低项目的性能:( 谢谢;)
更新:这个程序运行在不同的计算机上,所以如果我可以访问目录,而不是“思考”读取哪个文件,那就太好了=D
希望最后更新:抱歉打扰你们:) 从我读到的答案来看,没有办法。我的问题是:你认为有什么好的替代方法来代替数组?我的想法是在文本文件中创建一个索引,只取第一行。您可以查看类和 例如,使用此方法,您将能够根据文件的上次修改日期筛选文件
另一方面,出于性能考虑,为什么要避免列出所有文件?在当前版本的java中,除了列出所有文件并选择所需文件之外,没有其他方法可以做到这一点。如果您可以使用java 7,那么有一个类可以遍历文件夹树而不列出所有文件。我决定使用这段代码,这并不完全是我想要的,但它现在可以工作
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;
}
}
public静态字符串getFileToCrawl(字符串目录){
文件目录=新文件(目录);
String[]children=dir.list();
if(children==null){
返回“”;
}否则{
int i=0;
字符串文件名=子项[i];
虽然(i我意识到这是一个旧线程,但这里有一个快速而肮脏的方法:
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]);
}
}
将文件读入数组,然后随机选择一个条目有什么不对?通常没有“给我一个随机文件”的文件系统方法,因此您必须通过将文件读入数组来确定哪些文件可用。这并没有实际问题,但我想将ram的使用量降至最低,并且这一部分的过程也会进入程序,如果我必须列出一个包含一千多个文件的数组,这是一个有意义的数字如果你希望目录中有很多文件,你可以查看java.nio.file.directoryStream如果我使用它,我不需要阅读整个目录吗?(真的很抱歉英文版)谢谢你的回答=(我不能=(,我的另一个选择是对文件建立索引并逐个删除,但这不是我的主意,我不想拥有这个神奇的文件,因为它也会降低我的性能:-你运行过关于file.list()的任何基准测试)性能?这是一个本机方法,只返回一个文件名数组,所以千个字符串并不是那么多。千个字符串只是想说些什么,它可能会是很多不同的进程和计算机同时运行,我将在信息中添加它。这与OP要求的正好相反,即他说:“有没有办法避免在一个数组中列出所有文件,然后取第一个?”我没有列出任何东西,只是从文件夹中随机选择一个文件。这不是他要求的吗?行String[]children=dir.list();
正在列出。