java.io.IOException:系统找不到指定的路径

我试图打开我刚刚在我的代码中创建的文件(所以我确信该文件存在)

代码是这样的:

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”)。 有没有办法避免这种情况?

我发现了真正的问题。 它不是我所想的%20。 我没有直接访问文件位置的权限。 解释起来有点复杂……我很抱歉我以前找不到真正的问题。

无论如何,谢谢你的建议!

你在使用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的安装位置。

尝试使用其他应用程序打开其他文件,并查看是否支持其他文件类型。 正如Clarisse所说,如果指定的文件没有关联的应用程序或者关联的应用程序无法启动,则会从’open’方法抛出IOException。 如果指定的文件不存在,则抛出IllegalArgumentException,这不是您的情况。 如果由于某种原因打开带有Desktop的CSV文件对您不起作用,请尝试使用krslynx方法。 同样可以在这里找到。 您可以使用此处的代码快速组装测试应用程序,以打开机器上的任何内容

在桌面javadoc中写道:

 IOException - if the specified file has no associated application or the associated application fails to be launched 

那么你确定你的文件类型有一个默认的应用程序关联吗?

正如krslynx所说,file.createNewFile()是不必要的。 但是,如果中间目录尚不存在,则可能需要file.mkdirs()。

编辑:从你的问题不清楚这是在新的FileWriter()或Desktop.open()中发生的。 请澄清。