String[] ss = myDir.list();
File toProcess = null;
for(int i = o ; i< ss.length ; i++){
toProcess = new File(myDir.list()[i], myDir));
if(toProcess.isFile())break;
}
从文件中。阶级
public File[] listFiles() {
String[] ss = list();
if (ss == null) return null;
int n = ss.length;
File[] fs = new File[n];
for (int i = 0; i < n; i++) {
fs[i] = new File(ss[i], this);
}
return fs;
}
# 1 楼答案
Java 1.5上没有好的解决方案,可以使用过滤器只获取一个文件,但Java只返回一个文件,但无论如何都要对所有文件进行解析。如果不需要实际的文件对象,可以尝试
Runtime.getRuntime().exec("dir")
在\n
上拆分返回的字符串,并打印出第一行:-P# 2 楼答案
编辑:我的实现利用了。list()正如您所说,它不会,但无论如何它可能有一些价值:)
如果查看文件实现,公共字符串[]list()方法的开销似乎比文件[]listFiles()小。所以最快的应该是
从文件中。阶级
# 3 楼答案
在Java 7中可以使用DirectoryStream,但在Java 5中,获取目录项的唯一方法是
list()
和listFiles()
请注意,列出一个包含数百个文件的目录并不理想,但与处理其中一个文件相比,可能还是没什么大不了的。但一旦目录中包含数千个文件,它可能就会开始出现问题
# 4 楼答案
从您所说的内容来看,您似乎希望对目录中的每个文件(包括添加到目录中的文件)进行一次处理。可以执行以下操作:在添加文件时生成通知的目录上设置监视器。然后处理收到通知的每个文件。既然您使用JDK 5,我建议使用jpathwatch。请注意,在尝试处理文件之前,需要确保文件写入已完成。启动监视器以确保处理每个新文件后,一次性使用文件列表来处理当前内容
# 5 楼答案
使用
FileFilter
(或FilenameFilter
)编写为只接受一次,例如:# 6 楼答案
如果我们看一下文件系统类,它归结为文件系统访问,只有list方法,因此在“纯”JAVA中,除了在字符串数组中列出它们之外,似乎没有其他方法来选择文件