Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列出目录中的所有文件夹,即使添加了新文件,也不更改顺序_Java_File - Fatal编程技术网

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

Java 列出目录中的所有文件夹,即使添加了新文件,也不更改顺序,java,file,Java,File,如何在使用Java的文件中列出目录中的所有文件夹而不更改顺序,即使添加了新文件?当我运行程序时,它将进入一个带有“notchecked”注释的无限循环,我将该注释放入其中,以查看它是否正在检查文件 try { BufferedWriter bufferedWriter = null; bufferedWriter = new BufferedWriter(new FileWriter("d://my.txt")); Buffered

如何在使用Java的文件中列出目录中的所有文件夹而不更改顺序,即使添加了新文件?当我运行程序时,它将进入一个带有“notchecked”注释的无限循环,我将该注释放入其中,以查看它是否正在检查文件

    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) 为了更快地获得更好的帮助,请发布一个。