带空格的路径

时间:2018-04-20 13:52:09

标签: java path spaces

我不是程序员,我需要修复一些代码来解决问题。 问题是应用程序不会读取带空格的文件路径。

代码:

private void jMenuHELPActionPerformed(java.awt.event.ActionEvent evt) { //GEN FIRST:event_jMenuHELPActionPerformed
    try {
        Runtime.getRuntime().exec("cmd /c start "+" C:\Users\rafi\Documents\Name with spaces\file.txt");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    // ...
}

当我尝试从应用程序中打开文件时,它会打开一个窗口,显示以下错误:

Windows cannot `find C:\Users\rafi\Documents\Name`. Make sure that the name is correct.

它只读取第一个空格的路径。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

尝试将路径放在引号中。在命令行中,不同的参数由空格分隔,因此路径需要用引号括起来表示它是单个参数。

Runtime.getRuntime().exec("cmd /c start \"C:\\Users\\rafi\\Documents\\Name with spaces\\file.txt\"");

答案 1 :(得分:0)

您需要转义\个字符,Desktop.open(File)是我如何使用操作系统打开一个给定文件的'该文件类型的默认应用程序。

File file = new File("C:\\Users\\rafi\\Documents\\Name with spaces\\file.txt");
try {
    Desktop.getDesktop().open(file);
} catch (IOException e) {
    e.printStackTrace();
}

答案 2 :(得分:0)

你有没有尝试过:

private void jMenuHELPActionPerformed(java.awt.event.ActionEvent evt) {//GEN FIRST:event_jMenuHELPActionPerformed
    try {
        Runtime.getRuntime().exec("cmd /c start "+" C:\Users\rafi\Documents\Name\ with\ spaces\file.txt");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

那应该逃避空格字符,而不是将withspaces\file.txt作为参数。

答案 3 :(得分:0)

您可以在下面更新您的代码:

private void jMenuHELPActionPerformed(java.awt.event.ActionEvent evt) { //GEN FIRST:event_jMenuHELPActionPerformed
    try {
        Runtime.getRuntime().exec("cmd /c start "+" C:\\Users\\rafi\\Documents\\Name with spaces\\file.txt");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    // ...
}