FileInputStream 抛出 FileNotFoundException
FileInputStream throws FileNotFoundException
此代码抛出 FileNotFoundException。
编辑:根据要求,我包含了完整的 StackTrace。
import java.io.FileInputStream;
import java.io.InputStream;
public class ReadFile{
public static void main(String[] args){
InputStream inputstream = new FileInputStream("C:\file.txt");
}
}
但文件 "file.txt" 位于该位置。我想按要求post截图,但我不能,因为我至少需要 10 点声望。
这真的是完整的文件路径吗?最好检查那个。
另外,我建议放置要由您的程序读取的文件,例如将文本文件、图像等放入项目的类路径中,这样当您打包和导出它时,文件路径不会因为在其他人的 PC 上而该文件不存在于该路径等上而受到阻碍。
This 回答建议您将文件的路径转换为 java 符合 URL 的路径。
试试下面这个。
InputStream inputstream = new FileInputStream("C:"+File.separator+"file.txt");
更好的方法是
File file = new File("C:"+File.separator+"file.txt");
if(file.exists()) {
//Read the file
}
else {
System.out.println("File does not exist);
}
要确定windows中是否存在文件,请按windows button + r
,然后粘贴您提到的文件路径,然后按回车键。如果文件在该位置,将打开一个包含文件内容的记事本。
如果您 100% 确定该文件存在并且您仍然得到 FileNotFoundException
,那么很可能您的用户或用户 运行 Java 没有权限访问此文件(因为我使用的是德语 Windows 对话框是德语的,但如您所见 "Benutzer" (即用户)被拒绝读取和执行文件 a.txt
的权利:
但是,这会导致 FileNotFoundException 返回本地化错误消息:
Exception in thread "main" java.io.FileNotFoundException: C:\a.txt (Zugriff verweigert)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:131)
at java.io.FileInputStream.<init>(FileInputStream.java:87)
at Threadstuff.main(Threadstuff.java:50)
Zugriff verweigert 的意思是 "access denied"。如果这也不是问题,我想您应该 post 完整的 StackTrace。
我在评论中提到的另一个选项是文件夹和搜索选项 -> 视图中的资源管理器选项 ("View" -> "Options"):
(大致翻译为 "Hide extensions for known extensions")
如果启用此功能,资源管理器中的文件名将在视图中丢失其扩展名。这意味着它们显示为 "file" 而不是 "file.txt" - 这有时会导致在重命名文件时创建 "file.txt.txt" 的错误。 is/was 也经常用来欺骗用户,让他们认为他们打开了另一种文件 (.pdf.exe) - 主要被坏人使用。
此代码抛出 FileNotFoundException。
编辑:根据要求,我包含了完整的 StackTrace。
import java.io.FileInputStream;
import java.io.InputStream;
public class ReadFile{
public static void main(String[] args){
InputStream inputstream = new FileInputStream("C:\file.txt");
}
}
但文件 "file.txt" 位于该位置。我想按要求post截图,但我不能,因为我至少需要 10 点声望。
这真的是完整的文件路径吗?最好检查那个。 另外,我建议放置要由您的程序读取的文件,例如将文本文件、图像等放入项目的类路径中,这样当您打包和导出它时,文件路径不会因为在其他人的 PC 上而该文件不存在于该路径等上而受到阻碍。
This 回答建议您将文件的路径转换为 java 符合 URL 的路径。
试试下面这个。
InputStream inputstream = new FileInputStream("C:"+File.separator+"file.txt");
更好的方法是
File file = new File("C:"+File.separator+"file.txt");
if(file.exists()) {
//Read the file
}
else {
System.out.println("File does not exist);
}
要确定windows中是否存在文件,请按windows button + r
,然后粘贴您提到的文件路径,然后按回车键。如果文件在该位置,将打开一个包含文件内容的记事本。
如果您 100% 确定该文件存在并且您仍然得到 FileNotFoundException
,那么很可能您的用户或用户 运行 Java 没有权限访问此文件(因为我使用的是德语 Windows 对话框是德语的,但如您所见 "Benutzer" (即用户)被拒绝读取和执行文件 a.txt
的权利:
但是,这会导致 FileNotFoundException 返回本地化错误消息:
Exception in thread "main" java.io.FileNotFoundException: C:\a.txt (Zugriff verweigert)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:131)
at java.io.FileInputStream.<init>(FileInputStream.java:87)
at Threadstuff.main(Threadstuff.java:50)
Zugriff verweigert 的意思是 "access denied"。如果这也不是问题,我想您应该 post 完整的 StackTrace。
我在评论中提到的另一个选项是文件夹和搜索选项 -> 视图中的资源管理器选项 ("View" -> "Options"):
(大致翻译为 "Hide extensions for known extensions")
如果启用此功能,资源管理器中的文件名将在视图中丢失其扩展名。这意味着它们显示为 "file" 而不是 "file.txt" - 这有时会导致在重命名文件时创建 "file.txt.txt" 的错误。 is/was 也经常用来欺骗用户,让他们认为他们打开了另一种文件 (.pdf.exe) - 主要被坏人使用。