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

时间:2011-09-13 07:53:47

标签: java io

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

代码是这样的:

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

5 个答案:

答案 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()中发生的。请澄清。