抱歉标题不好,想不出更好的标题。
我目前处于矛盾的问题与 FileNotfoundException ,其中我的文件通过命令file.getCanonicalPath()
和使用FileInputStream
方法找到。我得到 FileNotFoundException 。
以下是我使用的代码:
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
会返回错误。谁能帮助我?
答案 0 :(得分:0)
file.getCanonicalPath()
只返回"members.s"
作为其路径,而不是完整路径。
getCaninicalPath()
从路径名中删除了多余的.
或..
。
因为FileInputStream
将File
作为其参数(也是字符串btw)而File
将String
作为参数。
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);
答案 1 :(得分:-1)
当具有指定路径名的文件不存在或文件确实存在但由于某种原因无法访问时,例如当尝试打开只读文件进行写入时,将抛出此异常。 / p>