如何使用 Java 在文件中列出目录中的所有文件夹,即使添加新文件也不更改顺序?当我运行该程序时,它将进入无限循环,并带有“未检查”注释,我将其放入以查看它是否正在检查文件。
try
{
BufferedWriter bufferedWriter = null;
bufferedWriter = new BufferedWriter(new FileWriter("d://my.txt"));
BufferedReader br = new BufferedReader(new FileReader("d://my.txt"));
int i=1;
File f=new File("D:/Moviezzz");
File[] fi=f.listFiles();
for(File fil:fi)
{
if(!fil.isHidden() && (fil.isDirectory() || fil.isFile()))
{
int s=i++;
String files = fil.getName();
String thisLine;
while(null != (thisLine="\t"+br.readLine()))
{
String exist[]=thisLine.split("\t");
//ensure that it is already written in file
if(exist[0].equals(files))
{
System.out.println("Checked");
}
//ensure that it is not written in file
else
{
System.out.println("Not Checked");
}
}
bufferedWriter.write(s+"\t"+files);
bufferedWriter.newLine();
bufferedWriter.flush();
System.out.print("yes");
// bufferedWriter.write(s+" "+files);
}
br.close();
//Construct the BufferedWriter object
System.out.println("Succ");
}
}
catch(Exception ex)
{
System.out.println("failed");
}
最佳答案
您将陷入无限循环,因为 while
循环中的条件永远不会为 false。
while(null != (thisLine="\t"+br.readLine()))
您实际上是将 "\t"
添加到 readLine()
的结果中,因此您要与 null
进行比较的值实际上永远不会是null
。它总是有一个 \t
。
After further research ,一旦到达流的末尾,thisLine
将变为 "\tnull"
如果我是你,我就不会在你的 while
循环中执行所有这些操作。我会做更多类似的事情。
while(null != (thisLine=br.readLine()))
{
thisLine = "\t"+ + thisLine;
...
关于java - 列出目录中的所有文件夹,即使添加新文件也不更改顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16524920/