Java 列出文件夹和子文件夹的内容,但我在控制台中得到的是正确的o/p,而不是在文件it';s不打印子文件夹内容';s

Java 列出文件夹和子文件夹的内容,但我在控制台中得到的是正确的o/p,而不是在文件it';s不打印子文件夹内容';s,java,Java,它不会将子文件夹内容打印到文件中 输出必须类似于: 目录:xyz 目录:a 1. 2. 3. 目录:b 1. 2. 3如果您只想修改上面的代码,那么下面的内容应该可以帮您完成这项工作: public static void listFilesForFolder(final File folder) throws IOException, InterruptedException { File file = new File("F:\\nitish\\out.txt"); //Yo

它不会将子文件夹内容打印到文件中

输出必须类似于: 目录:xyz 目录:a 1. 2. 3. 目录:b 1. 2.
3

如果您只想修改上面的代码,那么下面的内容应该可以帮您完成这项工作:

public static void listFilesForFolder(final File folder) throws IOException, InterruptedException
{
        File file = new File("F:\\nitish\\out.txt"); //Your file
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                System.out.println("Directory:" + fileEntry.getName());
                writer.write("Directory:" + fileEntry.getName());
                listFilesForFolder(fileEntry);
            } else {
                int len = fileEntry.getName().length();
                writer.write(fileEntry.getName().substring(0, len-4));
                System.out.println("\t" + fileEntry.getName().substring(0, len-4));
            }

       }
       writer.close();
}

但是,我认为您可以保持一个运行的变量(比如StringBuilder类型)它可以从ListFileForFolder方法返回,其中包含要写入文件的文本,然后您可以在最后将该值写入文件一次。

格式化代码,以便更易于阅读。请尝试详细说明您的问题,并将其进一步完善。如果您需要帮助学习如何写一个好问题,请访问。是否有错误?或者现在打印的是什么?打印主文件夹中的内容,但不打印文件中的子文件夹内容我正在获得正确的o/pconsole@SrinivasMS,问题是由于每次在每个递归循环上创建writer,甚至在前一个循环关闭之前。
public static void listFilesForFolder(final File folder) throws IOException, InterruptedException
    {
            File file = new File("F:\\nitish\\out.txt"); //Your file
            BufferedWriter writer = new BufferedWriter(new FileWriter(file, true));
            for (final File fileEntry : folder.listFiles()) {
                if (fileEntry.isDirectory()) {
                    System.out.println("Directory:" + fileEntry.getName());
                    writer.write("Directory:\t" + fileEntry.getName());
                    writer.flush();
                    listFilesForFolder(fileEntry);
                } else {
                    int len = fileEntry.getName().length();
                    writer.write(fileEntry.getName().substring(0, len-4));
                    writer.flush();
                    System.out.println("\t" + fileEntry.getName().substring(0, len-4));
                }

           }
           writer.close();
    }