我正在尝试打开我刚刚在我的代码中创建的文件(所以我确信该文件存在)
代码是这样的:
File file = new File(filename);
file.createNewFile();
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
...
bw.close();
try {
Desktop desktop = null;
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
}
desktop.open(file);
} catch (Exception e) {
...
}
但正如标题所示,我从desktop.open(文件)istruction获得了“java.io.IOException:系统无法找到指定的路径”。 问题肯定是文件路径名包含空格(转换为“%20”)。有没有办法避免这种情况?
答案 0 :(得分:2)
我发现了真正的问题。 它不像我想象的那样是%20。 我只是没有直接访问文件位置的权限。解释起来有点复杂...... 我很抱歉,我以前无法弄清楚真正的问题。
无论如何,谢谢你的建议!
答案 1 :(得分:1)
您使用的是IDE吗?变量'filename'里面是什么(它的实际内容)。第二行是不必要的。
堆栈跟踪中的错误是指向BufferedWriter bw = new BufferedWriter(new FileWriter(file));
还是desktop.open(file);
编辑:
您还可以尝试以下代码
File myCSVFile; //reference to your csv file here
String execString = "excel " + myCSVFile.getAbsolutePath();
Runtime run = Runtime.getRuntime();
try {
Process pp = run.exec(execString);
} catch(Exception e) {
e.printStackTrace();
}
出现java.io错误,因为它无法打开文件。上面的代码将强制excel打开您的文件作为参数。您需要设置环境变量以确保命令行中的“excel”命令打开Excel应用程序。
如果您计划发布此应用程序以供使用,您可以通过检查注册表确保安装excel,然后从那里检查Excel的安装位置。
答案 2 :(得分:1)
尝试与其他应用程序打开不同的文件,并查看是否支持其他文件类型。正如Clarisse所说,如果指定的文件没有关联的应用程序或者关联的应用程序无法启动,则会从'open'方法抛出IOException。如果指定的文件不存在,则抛出IllegalArgumentException,这不是您的情况。如果由于某种原因打开带有桌面的CSV文件对您不起作用,请尝试使用krslynx方法。同样可以找到here。您可以使用找到的代码here
快速组装测试应用程序,以便在您的计算机上打开任何内容答案 3 :(得分:0)
在桌面javadoc中写道:
IOException - if the specified file has no associated application or the associated application fails to be launched
您确定您的文件类型与默认应用程序相关联吗?
答案 4 :(得分:0)
正如krslynx所说,file.createNewFile()是不必要的。但是,如果中间目录尚不存在,则可能需要file.mkdirs()。
编辑:从你的问题不清楚这是在新的FileWriter()还是在Desktop.open()中发生的。请澄清。