Java 列出目录中的所有文件夹,即使添加了新文件,也不更改顺序
如何在使用Java的文件中列出目录中的所有文件夹而不更改顺序,即使添加了新文件?当我运行程序时,它将进入一个带有“notchecked”注释的无限循环,我将该注释放入其中,以查看它是否正在检查文件Java 列出目录中的所有文件夹,即使添加了新文件,也不更改顺序,java,file,Java,File,如何在使用Java的文件中列出目录中的所有文件夹而不更改顺序,即使添加了新文件?当我运行程序时,它将进入一个带有“notchecked”注释的无限循环,我将该注释放入其中,以查看它是否正在检查文件 try { BufferedWriter bufferedWriter = null; bufferedWriter = new BufferedWriter(new FileWriter("d://my.txt")); Buffered
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
,当您到达流的末尾时,该行将成为
“\tnull”
如果我是你,我不会在你的while
循环中做所有这些。我会做更像这样的事
while(null != (thisLine=br.readLine()))
{
thisLine = "\t"+ + thisLine;
...
您什么时候从
BufferedReader
读取任何内容?您实际上是在尝试同时读取和写入同一个文件吗?除非你a)正在实现一个数据库,b)知道你在做什么,否则这是个坏主意。您应该通过多个步骤更改程序来完成此操作。首先将旧文件读入适当的数据结构,然后对数据结构进行更改(在检查重复文件的同时添加新文件),然后再次写出整个内容。1)对代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。2) 为了更快地获得更好的帮助,请发布一个。