繁体   English   中英

如何扫描文件夹,以便可以在文本文件中列出其内容的名称? Java的

[英]How do I scan a folder so I can list the name of its contents in a text file? Java

这是我的代码。 到目前为止,我已经能够获取他们想要扫描的目录以及他们想要为输出文件命名的名称。 目的是转到一个文件夹,并能够扫描所有这些filder子级名称。 然后,我取这些名称并将其保存到文本文件中。 我只得到指定文件夹的子代的名称。 它不应该打开其他文件夹并使孩子在那里。 在我的方法listFilesForFolder()中,我得到了一个空指针。 有人可以帮我弄清楚为什么我会得到nullpointer异常吗? 我的代码对我来说很有意义。

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;


public class ReadWriteMain {

        public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        Scanner reader = new Scanner(System.in);
        System.out.println("Please Enter the name of the output file... ");
        String name = reader.nextLine();

        System.out.println("Please Enter the file path of the directory you would like to copy... ");
        String list = reader.nextLine();
        final File folder = new File(list);
        listFilesForFolder(folder, name);

    }

    public static void listFilesForFolder(final File folder, String name) throws IOException {
        System.out.println("C:\\tempJava\\" + name + ".out");
        FileWriter fw = new FileWriter("C:\\tempJava\\" + name + ".out");
        PrintWriter output = new PrintWriter(fw);

        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFilesForFolder(fileEntry, name);
            } else {
                output.println(fileEntry.getName());
            }
        }
        output.close();
        fw.close();
    }

}

不应该打开其他文件夹并让孩子在那里。

然后if (fileEntry.isDirectory()) { listFilesForFolder(fileEntry, name); ... if (fileEntry.isDirectory()) { listFilesForFolder(fileEntry, name); ...

在我的方法listFilesForFolder()中,我得到了一个空指针。

如果您尝试读取的文件夹不存在,或者您没有读取权限, listFiles()将返回null。 要检查。

我认为您的问题在这一行(不是您的其他方法):

    final File folder = new File(list);

给定您的代码和这样的目录结构:

  • C:
    • tempJava
      • MyFolder文件

您的输入应如下所示:

Please Enter the name of the output file... 
output
Please Enter the file path of the directory you would like to copy... 
C:\tempJava\myFolder

我认为您可能刚刚输入了“ myFolder”而不是“ C:\\ tempJava \\ myFolder”?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM