首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Java打开文档的更好方法?

从Java打开文档的更好方法?
EN

Stack Overflow用户
提问于 2018-09-19 00:22:13
回答 2查看 0关注 0票数 0

我一直在使用以下代码在我的Windows机器上使用Java打开Office文档,PDF等,并且它工作正常,除了某些原因,当文件名将其嵌入其中时,多个连续的空格如“File [SPACE] [ SPACE] Test.doc的”。

我怎样才能做到这一点?我并不反对整理代码...但我宁愿不用一个调用JNI的第三方库替换它。

代码语言:javascript
复制
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);            
}
EN

回答 2

Stack Overflow用户

发布于 2018-09-19 08:55:29

如果使用的是Java 6,则只需使用java.awt.Desktop的open方法即可使用当前平台的默认应用程序启动该文件

票数 0
EN

Stack Overflow用户

发布于 2018-09-19 09:49:44

问题可能是正在使用的“启动”命令,而不是文件名解析。例如,这似乎在我的WinXP机器上运行良好(使用JDK 1.5)

代码语言:javascript
复制
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();
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档