我不是程序员,我需要修复一些代码来解决问题。 问题是应用程序不会读取带空格的文件路径。
代码:
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.
它只读取第一个空格的路径。
我该如何解决这个问题?
答案 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();
}
}
那应该逃避空格字符,而不是将with
和spaces\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();
}
// ...
}