java.io.FileNotFoundException:“ C:/Users/Joe/Desktop/file.txt”(文件名,目录名称或卷标签语法不正确)

use*_*162 5 inputstream file filestream

我有这个代码:

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);
Run Code Online (Sandbox Code Playgroud)

当我输入文件“ C:/Users/Joe/Desktop/file.txt”的目标时,结果是此错误:

java.io.FileNotFoundException:“ C:/Users/Joe/Desktop/file.txt”(文件名,目录名称或卷标签语法不正确)

但是文件存在,那我该怎么办?

感谢你..

scr*_*rd3 0

编辑:我注意到您在文件名中使用了正斜杠。如果您在 Windows 上,则需要使用反斜杠 ()

如果您 100% 确定该文件存在于特定位置,那么它是以下两种情况之一。另外,尝试转义/文件名中的 s

Java如果没有正确处理就会抛出这个异常。将您的语句放在一个try ... catch()块中,或者throws FileNotFoundException在 import 后放置java.io.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");
}
Run Code Online (Sandbox Code Playgroud)

或者

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);

}
Run Code Online (Sandbox Code Playgroud)

另外,另一个原因是文件受到保护。将文件设置为只读,或者如果您希望能够同时执行这两种操作,则将文件设置为读取和写入。