簡體   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