我一直在使用以下代码在我的Windows机器上使用Java打开Office文档,PDF等,并且它工作正常,除了某些原因,当文件名将其嵌入其中时,多个连续的空格如“File [SPACE] [ SPACE] Test.doc的”。
我怎样才能做到这一点?我并不反对整理代码...但我宁愿不用一个调用JNI的第三方库替换它。
public static void openDocument(String path) throws IOException {
// Make forward slashes backslashes (for windows)
// Double quote any path segments with spaces in them
path = path.replace("/", "\\").replaceAll(
"\\\\([^\\\\\\\\\"]* [^\\\\\\\\\"]*)", "\\\\\\\"$1\"");
String command = "C:\\Windows\\System32\\cmd.exe /c start " + path + "";
Runtime.getRuntime().exec(command);
}
发布于 2018-09-19 08:55:29
如果使用的是Java 6,则只需使用java.awt.Desktop的open方法即可使用当前平台的默认应用程序启动该文件
发布于 2018-09-19 09:49:44
问题可能是正在使用的“启动”命令,而不是文件名解析。例如,这似乎在我的WinXP机器上运行良好(使用JDK 1.5)
import java.io.IOException;
import java.io.File;
public class test {
public static void openDocument(String path) throws IOException {
path = "\"" + path + "\"";
File f = new File( path );
String command = "C:\\Windows\\System32\\cmd.exe /c " + f.getPath() + "";
Runtime.getRuntime().exec(command);
}
public static void main( String[] argv ) {
test thisApp = new test();
try {
thisApp.openDocument( "c:\\so\\My Doc.doc");
}
catch( IOException e ) {
e.printStackTrace();
}
}
}
https://stackoverflow.com/questions/-100000777
复制相似问题