我想从多个目录中读取多个文件。到目前为止,我的程序只能读取多个文件,直到达到一定限
public void filesTobeCollected(String validpath) throws Exception {
this.folder = new File(validpath);
// this.file = new ArrayList<>();
File[] fileEntry = folder.listFiles();
System.out.println("directory path" + fileEntry.length);
/*****File upload read****/
for (int i = 0; i < fileEntry.length; i++) {
/*this line weeds out other directories/folders*/
if (fileEntry[i].exists()) {
file.add(String.valueOf(fileEntry[i]));
}
}
}
我通过这个函数发送值目录,
public List<String> filesTobeTested(ArrayList<String> file) throws
Exception {
Set<String> test = new HashSet<>();
test.add("src/test/resources/gfd");
test.add("src/test/resources/rds");
test.add("src/test/resources/oiu");
//test.add("src/test/resources/pol");
System.out.println("directory path 2" + test);
for (int i = 0; i < 1; i++) {
for (Iterator<String> it = test.iterator(); it.hasNext(); ) {
String f = it.next();
filesTobeCollected(f);
System.out.println("Found" + f);
}
这里File [] fileEntry似乎有一些限制,因为我使用test.add推送更多目录(“src / test / resources / obj”)File [] fileEntry无法处理更多文件。 File [] fileEntry的任何替代方案是否包含无限或未知数量的文件?
答案 0 :(得分:3)
File[] fileEntry
的任何替代方案是否包含无限量或未知数量的文件?
是的,使用ArrayList<File>
将自动处理大小。
但这似乎不是问题,因为您知道在数组创建中需要处理的所有文件,因此大小准确File[] fileEntry = folder.listFiles();
。
删除此行
for (int i = 0; i < 1; i++) {
似乎有用......如果问题仍然存在,发布您的stacktrace
答案 1 :(得分:1)
我深深地认识到你,你想要收集这些文件。
在我的情况下,我首先建议收集文件路径或文件,并在ArrayList<File>
中添加,辅助读取这些文件并在ArrayList<byte[]>
中收集,以后如果你想把它变成一个文件,肯定你可以使用ObjectOutputStream
类来编写ArrayList<byte[]>
Object
,当然可以创建一个File
在此期间照看文件阅读&amp;写字节大小不要跨越Java堆空间边界。