【发布时间】:2024-01-21 14:22:01
【问题描述】:
我的应用程序引发异常 - java.io.FileNotFoundException:文件路径无效。不知道为什么。我已阅读有关该主题的问题和答案,但没有人可以帮助我。
代码如下:
String userhome = System.getProperty("user.home");
String filename = null;
File rdp = null;
for (int item = 0; item < darab; item++) {
filename = toValidFileName(ProgramList.get(item).getP_name());
filename += ".rdp";
rdp = new File(userhome, filename);
try {
JFrame panel;
panel = new JFrame();
panel.setSize(400, 10);
panel.setLocation(300, 400);
panel.setTitle("Saving " + rdp.getAbsolutePath());
try (FileOutputStream fstr = new FileOutputStream(rdp)) {
panel.setVisible(true);
char c;
for (int j = 0; j < 2336; j++) {
c = ProgramList.get(item).p_body.charAt(j);
fstr.write(c);
}
fstr.flush();
fstr.close();
panel.setVisible(false);
}
} catch (IOException ioe) {
JOptionPane.showMessageDialog(this,
ioe.getMessage(), "Save rdp file", JOptionPane.ERROR_MESSAGE);
System.err.println(ioe.getMessage() + " : "+ rdp.getAbsoluteFile());
}
}
结果: 文件路径无效:C:\Users\LiPI\CosmicLd.rdp
toValidFilename() 是从 (KORG RADIAS) 程序名称中删除禁止的字符以创建一个有效的文件名。
我没有发现我的错 :( 目标目录不是只读的,用户有必要的权限。当我在该行之后查看 file.canWrite() 时: rdp = 新文件(用户主目录,文件名); 它总是错误的。 我做错了什么? 谢谢!
【问题讨论】:
-
如果我选择了一个文件供文件选择器写入,它就可以了。
-
你会发布堆栈跟踪和 toValidFileName 代码吗?
-
请选择与文件选择器相同的文件并打印文件名。将名称与失败的名称进行比较。注意空格。
-
System.out.println(filename.length());打印什么?我怀疑你的文件名中可能有不可见的控制字符。 -
能否请您从文件资源管理器中复制路径并将其作为变量传递,看看它是否有效!如果它有效,则您的 toValidFileName() 有问题,如果不是文件或其他问题。
标签: java java-7 netbeans-8.2