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"(文件名、目录名或卷标语法不正确)的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中解码 jpeg