在C盘中,我有一个名为“搜索文件”的文件夹,在“搜索文件”文件夹中,我有四个子目录,分别为“文件夹1”,“文件夹2”,“文件夹3”和“文件夹4”。
在“文件夹1”中,我有一个名为“hello.txt”的文本文件,该文件的内容为“hello”。
我的预期输出是“文件的目录”+“文件名”+“文件体”。
以下是我目前拥有的代码。
当我执行上述代码时,我收到以下错误信息:
在“文件夹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 hello
您能指导我正确的方向吗?如何修复上述异常并如何获得一个显示目录、文件名和文件内容的字符串?
if (file.isDirectory()) {
块中 - 你正在尝试读取目录。 - Cinnamelse
子句,在那里你应该使用读取器。 - Cinnam