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

时间:2015-01-09 15:27:41

标签: java file-io

这是我的代码。到目前为止,我能够获得他们想要扫描的目录以及他们想要命名输出文件的内容。目标是转到一个文件夹,并能够扫描所有这些filder子名称。然后我取名并将它们保存到文本文件中。我只获取指定文件夹的子项名称。它不应该打开其他文件夹并让孩子们。在我的方法listFilesForFolder()中,我得到一个空指针excpetion。有人可以帮我弄清楚为什么我得到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();
    }

}

2 个答案:

答案 0 :(得分:0)

" 它不应该打开其他文件夹并让孩子们去。"

然后不要这样做if (fileEntry.isDirectory()) { listFilesForFolder(fileEntry, name); ...

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

如果您尝试阅读的文件夹不存在,或者您无权阅读该文件夹,listFiles()将返回null。得检查一下。

答案 1 :(得分:0)

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

    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"?