这是我计算机中的数据结构。
amdar(folder) / 20141125(folder) / 300++ txt files
/ 20141126(folder) / 300++ txt files
/ 20141127(folder) / 300++ txt files ...
/ 20141128(folder) / 300++ txt files ...
/ 20141129(folder) / 300++ txt files ...
... daily folders are added on and on ... `
我想使用Java读取每个文件夹以及300 ++ txt文件。为此,我使用了两个循环:一个循环用于文件夹,另一个循环用于文件夹的txt文件。首先,该文件夹的for循环效果很好。 txt文件的第二个嵌套for循环出错。文件夹从20141125开始,而读取的txt文件从20141128文件夹中的某个位置开始;文件夹中的txt文件太多:20141125〜20141128未读取。请查看下面的屏幕截图。
为解决此问题,我尝试使用while和分离的方法,而不是嵌套的for循环,但结果(错误)是相同的,而不是从起始文件夹开始读取。根据以下代码,我找不到导致此问题发生的任何原因。你能解释为什么吗?谢谢。
public static void main(String[] args) {
File dir = new File("c:\\html_test\\amdar");
File[] folder = dir.listFiles();
for(File table : folder) {
System.out.println(table);
File[] filenames = table.listFiles();
for (File file : filenames) {
System.out.println(file);
}
}
}
答案 0 :(得分:1)
Right click on the console > Preferences > Console buffer size.
> Uncheck the "Limit console output" checkbox.
我的代码没有错误。
结果只是被截断了80000个字符限制。
我释放了限制,并得到了预期的结果。
答案 1 :(得分:0)
Code written for to read multiple test files from multiple folder:
In the try block the FileReader reads a file and the second works as a constructor parameter and has a readline() method.
public static void main(String[] args) {
String dir = "c:\\html_test\\amdar";
File dir = new File(dir);
File[] folder = dir.listFiles();
for(File table : folder) {
if(table.isFile())
{
BufferedReader inputStream = null;
try{
inputStream = new BufferedReader(new FileReader(f));
String line;
while ((line = inputStream.readLine()) != null)
{
System.out.println(line);
}
}
finally {
if (inputStream != null) {
inputStream.close();
}
}
}
}
}