抱歉,这个标题不好,我想不出更好的了。
目前,我在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返回一个错误。有人能在thiS上帮我吗?
发布于 2014-03-09 10:33:29
file.getCanonicalPath()只返回"members.s"作为它的路径,而不是完整的路径。getCaninicalPath()从路径名中删除冗余的.或..。
因为FileInputStream将File作为其参数(也是字符串),而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);发布于 2014-03-09 10:16:34
如果不存在具有指定路径名的文件,或者该文件确实存在,但由于某些原因无法访问,则会引发此异常,例如,试图打开只读文件以进行写入。
https://stackoverflow.com/questions/22280765
复制相似问题