Java FileNotFoundException错误
对不起,这个标题不好,想不出更好的了 我目前在FileNotfoundException中遇到了这个矛盾的问题,我的文件是通过命令file.getCanonicalPath定位的,并且在使用FileInputStream方法时。我得到一个FileNotFoundException 以下是我使用的代码:Java FileNotFoundException错误,java,java-io,fileinputstream,Java,Java Io,Fileinputstream,对不起,这个标题不好,想不出更好的了 我目前在FileNotfoundException中遇到了这个矛盾的问题,我的文件是通过命令file.getCanonicalPath定位的,并且在使用FileInputStream方法时。我得到一个FileNotFoundException 以下是我使用的代码: File file = new File("members.s"); System.out.println(file.getCanonicalPath()); F
File file = new File("members.s");
System.out.println(file.getCanonicalPath());
FileInputStream fileIn = new FileInputStream("C:\\Users\\users\\Documents\\NetBeansProjects\\CWA2\\members.s");
ObjectInputStream in = new ObjectInputStream(fileIn);
byte[] b=new byte[fileIn.available()];
for(int i=0;i<b.length;i++){
m.add(mem = (Member)in.readObject());
}
这是我得到的输出和异常错误
C:\Users\users\Documents\NetBeansProjects\CWA2\members.s
java.io.FileNotFoundException: C:\Users\users\Documents\NetBeansProjects\CWA2\members.s (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at Demos.DeserializeDemo.main(DeserializeDemo.java:21)
所以我有点困惑。file.getCanonicalPath方法如何定位我要使用的文件,但FileInputStream返回错误。有人能帮我一下吗?如果指定路径名的文件不存在,或者该文件确实存在但由于某种原因无法访问,例如试图打开只读文件进行写入时,将引发此异常。file.getCanonicalPath将只返回members.s作为其路径,而不是完整路径。 getCaninicalPath删除冗余。或从路径名 因为FileInputStream将File作为其参数,所以顺便说一句,File也将字符串作为参数
File file = new File("members.s");
System.out.println(file.getCanonicalPath());
FileInputStream fileIn = new FileInputStream("C:\\Users\\users\\Documents\\NetBeansProjects\\CWA2\\members.s");
这应该是
File file = new File("C:\\Users\\users\\Documents\\NetBeansProjects\\CWA2\\members.s");
FileInputStream fileIn = new FileInputStream(file);
您确定异常与您的代码匹配吗?您可以使用C:\\Users\\lxLionHartxl\\Documents\\NetBeansProjects\\CWA2\\members.s创建流,但您的例外情况是关于C:\Users\Users\Documents\NetBeansProjects\CWA2\members.s。路径不同。请尝试从路径中删除双斜杠。@pathfinder2104双斜杠用于转义反斜杠。在爪哇,反斜杠是一个转义字符,因此要使用反斜杠,您需要使用第二个反斜杠对其进行转义,您可以只写C:/Users/Documents/NetBeansProjects/CWA2/members.s afaik。中有一个特定的警告:使用此方法的返回值来分配一个缓冲区以保存此流中的所有数据是不正确的。I我会试试看!谢谢