java.io.FileNotFoundException: "C:/Users/Joe/Desktop/file.txt"(文件名、目录名或卷标语法不正确)
Posted
技术标签:
【中文标题】java.io.FileNotFoundException: "C:/Users/Joe/Desktop/file.txt"(文件名、目录名或卷标语法不正确)【英文标题】:java.io.FileNotFoundException: "C:/Users/Joe/Desktop/file.txt" (The filename, directory name, or volume label syntax is incorrect) 【发布时间】:2014-01-02 07:52:12 【问题描述】:我有这个代码:
BufferedReader in = new BufferedReader
(new InputStreamReader(System.in));
System.out.print("Public Key to encrypt with: ");
String publicKeyFilename = in.readLine();
FileInputStream fis = new FileInputStream(publicKeyFilename);
当我输入文件“C:/Users/Joe/Desktop/file.txt”的目的地时,结果是这个错误:
java.io.FileNotFoundException: "C:/Users/Joe/Desktop/file.txt" (The 文件名、目录名或卷标语法不正确)
但是文件存在,我该怎么办?
谢谢你..
【问题讨论】:
首先您必须 100% 确定路径和文件是否存在(也适用于扩展名),然后尝试以下操作:C:\\Users\\Joe\\Desktop\\file.txt
每个告诉你使用反斜杠的人都是错误的。我刚刚测试了你的代码,它可以工作。这意味着你的 file.txt 真的不存在
【参考方案1】:
编辑:我注意到您在文件名中使用了正斜杠。如果你在 windows 上,你想使用反斜杠 ()
如果您 100% 确定此文件存在于特定位置,那么它是两件事之一。另外,尝试转义文件名中的/
s
如果处理不当,Java 会抛出此异常。将您的语句括在try ... catch()
块中,或在导入java.io.FileNotFoundException
后放入throws FileNotFoundException
,如下所示:
import java.io.FileNotFoundException;
try
BufferedReader in = new BufferedReader
(new InputStreamReader(System.in));
System.out.print("Public Key to encrypt with: ");
String publicKeyFilename = in.readLine();
FileInputStream fis = new FileInputStream(publicKeyFilename);
catch(FileNotFoundException e)
System.out.println("File does not exist");
或
import java.io.FileNotFoundException;
void encrypt throws FileNotFoundException()
BufferedReader in = new BufferedReader
(new InputStreamReader(System.in));
System.out.print("Public Key to encrypt with: ");
String publicKeyFilename = in.readLine();
FileInputStream fis = new FileInputStream(publicKeyFilename);
另外,另一个原因是文件受到保护。将文件设置为只读,或者如果您希望能够同时执行这两种操作,则将文件设置为读写。
【讨论】:
请注意,我正在输入带有“”的目的地...当我输入没有“”的目的地时,会出现另一个错误:java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException:检测过早的 EOF 为此,我认为您需要下载Java Cryptography Extension【参考方案2】:BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Public Key to encrypt with: ");
String publicKeyFilename = in.readLine();
try
FileInputStream fis = new FileInputStream(publicKeyFilename);
catch(Exception e)
System.out.println("File error !!!");
【讨论】:
【参考方案3】:当我输入文件的目的地时 "C:/Users/Joe/Desktop/file.txt"
文件名应不带引号 ("")
【讨论】:
以上是关于java.io.FileNotFoundException: "C:/Users/Joe/Desktop/file.txt"(文件名、目录名或卷标语法不正确)的主要内容,如果未能解决你的问题,请参考以下文章