文件从规范路径中有一个新的实例化,它返回错误的文件列表。
发生了java.io.FileNotFoundException
的FileNotFoundExceptionJava类部分
File file = new File("C:\\Locations.txt");
FileInputStream fis = new FileInputStream(file);
我也尝试过使用FileReader
BufferedReader br = new BufferedReader(new FileReader(new File("C:\\Locations.txt")));
结果仍然相同。这个名称不存在问题是控制台请求找到我正在解析的内容。有什么反馈吗?
答案 0 :(得分:0)
这是一个帮助你的演示:
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("C:\\test\\locations.txt");
if (!file.exists()) {
System.out.println("does not exist.");
return;
}
if(file.isFile() && file.canRead()) {
System.out.println(file.getName()+ " can be read from.");
}
if (file.isDirectory()) {
System.out.println(file.getPath()+" is a directory containing...");
String[] files = file.list();
for (String file1 : files) {
System.out.println(file1);
}
}
}
}
尝试捕捉以使事情干净。 对于控制台测试,如果您确定该文件将作为参数提供,那么请按以下方式进行:
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File(args[0]);
if (!file.exists()) {
System.out.println("File does not exist.");
return;
}
if(file.isFile() && file.canRead()) {
System.out.println(file.getName()+ " can be read from.");
}
if (file.isDirectory()) {
System.out.println(file.getPath()+" is a directory containing...");
String[] files = file.list();
for (String file1 : files) {
System.out.println(file1);
}
}
}
}
答案 1 :(得分:0)
您会发现问题实际上是路径名,无论如何。
当FileInputStream
尝试在Windows上打开文件时,它会通过以下启发式检查路径是否为绝对路径:
'\\'
- UNC绝对路径':'
而第三个字符是'\\'
- 带有驱动器名称的绝对路径。如果路径是绝对的(并且不会太长),则将其传递给Windows操作系统以打开该文件。这包括(明确的)检查文件是否确实存在。
(上面的描述是基于我在Java 8的OpenJDK源代码树中阅读用于Windows的FileInputStream.open0
的本机代码实现的C源代码。)
您提供了一个绝对路径(根据启发式方法)并且它不会太长。所以问题必须是Windows本身认为该文件不存在。