gpt4 book ai didi

java - 如何循环遍历一个目录,获取所有文件名,然后在 Java 中获取这些文件的内容

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:31 26 4
gpt4 key购买 nike

所以在 C 盘中,我有一个名为 Search Files 的文件夹,在 Search Files 中,我有四个名为 Folder 1 的子目录,文件夹 2文件夹 3文件夹 4

Folder 1 中,我有一个名为 hello.txt 的文本文件,该文件的内容是 hello

我期望的输出是“文件目录”+“文件名”+“文件正文”

下面是我现在的代码。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;

import org.apache.commons.io.FileUtils;

public class FileDirectories {

public static void main(String[] args) throws IOException {
File[] files = new File("C:\\Search Files").listFiles();
showFiles(files);
}

public static void showFiles(File[] files) throws IOException {
String line = null;

try{
for (File file : files) {
if (file.isDirectory()) {
String fileName = "Directory" + file.getName();
//System.out.println("Directory: " + file.getName());
BufferedReader in = new BufferedReader(new FileReader(file));
while((line = in.readLine()) != null)
{
System.out.println(line);
}
in.close();
showFiles(file.listFiles()); // Calls same method again.
} else {
System.out.println("File: " + file.getName() + file.toString());
}
}
}catch(NullPointerException e){
e.printStackTrace();
}




/*Iterator<File> it = FileUtils.iterateFiles(new File("C://Search Files//"), null, false);
while(it.hasNext()) {
System.out.println(((File) it.next()).getName());
}*/
}
}

当我执行上面的代码时,出现以下错误:

 Exception in thread "main" java.io.FileNotFoundException: C:\Search   Files\Folder 1 (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileReader.<init>(FileReader.java:72)
at org.raghav.stuff.FileDirectories.showFiles(FileDirectories.java:27)
at org.raghav.stuff.FileDirectories.main(FileDirectories.java:16)

再一次,我需要获取文件目录、文件名和文件内容。

对于 hello.txt,预期的输出应该是:C:\Search Files\Folder1\hello.txt 你好

你们能给我指出正确的方向吗?如何修复上述异常以及如何获取显示目录、文件名和文件内容的字符串?

最佳答案

你的代码看起来不错,除了你必须按如下方式组织代码,尤其是 showFiles 方法。

public static void showFiles(File[] files) throws IOException {
String line = null;

try{
for (File file : files) {
if (file.isDirectory()) {
String fileName = "Directory: " + file.getName();
System.out.print(fileName);
showFiles(file.listFiles()); // Calls same method again.
} else {
System.out.print("\tFile: " + file.getName() + file.toString());
//System.out.println("Directory: " + file.getName());
BufferedReader in = new BufferedReader(new FileReader(file));
while((line = in.readLine()) != null)
{
System.out.print("\t Content:" + line);
}
in.close();
System.out.println();
}
}
}catch(NullPointerException e){
e.printStackTrace();
}

输出如下:

Directory: Folder 1 File: C:\Search Files\Folder 1\test.txt  Content:this is a test
Directory: Folder 2 File: C:\Search Files\Folder 2\test.txt Content:this is a test
Directory: Folder 3 File: C:\Search Files\Folder 3\test.txt Content:this is a test
Directory: Folder 4 File: C:\Search Files\Folder 4\test.txt Content:this is a test

关于java - 如何循环遍历一个目录,获取所有文件名,然后在 Java 中获取这些文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com