java - 列出目录中的所有文件夹,即使添加新文件也不更改顺序

标签 java file

如何使用 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/

相关文章:

java - 在java中读取unicode字符

c++ - 逐行读取文本文件并计算比较运算符

C++ 将文本文件读入 vec4 数组

java - Spring 3 中通过注解注入(inject)与通过 XML 文件注入(inject)的对比。与继承相关的限制

java - 获取 WRAP_CONTENT 高度

java - 卷将属性文件映射到 docker 中的 webapp

c# - 从 URL 中查找文件的扩展名

c - 如何使用 C 中的 CSV 文件中的字符串 (char*) 填充二维数组

java - 如何测试从文件和路径读取(使用 junit)?

java - 如何再次启动一个完成的线程?