相关疑难解决方法(0)

在Java上使用外部应用程序打开文件

当您不知道文件与哪个应用程序相关联时,如何从Java应用程序中打开文件.另外,因为我使用Java,所以我更喜欢独立于平台的解决方案.

java external-application

17
推荐指数
2
解决办法
3万
查看次数

如何打开给定文件的用户系统首选编辑器?

我正在试图弄清楚如何打开给定文件的系统首选编辑器.

比如,我们有一个用Java编写的文件管理器.用户转到文件夹并查看文件列表.例如,有一个文件Icon.jpg.用户双击文件名和文件将在系统首选编辑器(即Gimp)中打开.主要问题是 - 如何做到这一点?

我们可以这样做Runtime.getRuntime().exec("something file"),但是这样你应该知道在用户环境中首选哪个程序.但是怎么样?

我们也能做到Desktop.getDesktop().edit(File file),但是这样我们就无法跟踪进程,也无法知道这个子进程是否已关闭.其他问题 - 函数在linux上不起作用(至少在Ubuntu 8.10上).还有Desktop.getDesktop().open(File file),但它强制打开文件查看器,而不是该文件类型的系统查看器.

我整个星期都在寻找解决方案,但没有任何合适的通用解决方案.你知道这个问题的其他方法吗?对于我的项目,如果它可以在Windows + Linux + Mac上运行就足够了.

感谢您的回答和建议.

编辑于2009-02-08 23:04

其他建议:我可以在Windows和Linux中强制"应用程序选择"窗口,就像Mac中的"打开文件"一样吗?例如,然后您尝试打开文件,系统会要求您从系统首选列表中选择应用程序?(类似于Windows资源管理器中的"打开方式...").你知道吗?

java editor system file

12
推荐指数
2
解决办法
2万
查看次数

使用默认程序打开Excel文件

我的程序成功创建并填充了Excel(.xls)文件.一旦创建,我希望在系统的默认程序(在我的情况下为Excel)中打开新文件.我怎样才能做到这一点?

对于我想在记事本中打开txt文件的旧程序,我使用了以下内容:

if (!Desktop.isDesktopSupported()) {
        System.err.println("Desktop not supported");
        // use alternative (Runtime.exec)
        return;
    }

    Desktop desktop = Desktop.getDesktop();
    if (!desktop.isSupported(Desktop.Action.EDIT)) {
        System.err.println("EDIT not supported");
        // use alternative (Runtime.exec)
        return;
    }

    try {
        desktop.edit(new File(this.outputFilePath));
    } catch (IOException ex) {
        ex.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试将此代码用于Excel文件时,它会给我以下错误:

java.io.IOException: Failed to edit file:C:/foo.xls
Run Code Online (Sandbox Code Playgroud)

建议?

java excel jexcelapi

11
推荐指数
1
解决办法
2万
查看次数

JavaFx 8:在浏览器中打开链接而不引用Application

有一个超链接.单击时,我想要在外部浏览器中打开一个链接.

网上引用的常用方法似乎是:

final Hyperlink hyperlink = new Hyperlink("http://www.google.com");
hyperlink.setOnAction(t -> {
    application.getHostServices().showDocument(hyperlink.getText());
});
Run Code Online (Sandbox Code Playgroud)

但是我没有参考Application.所述链路是从对话,这是从一个控制器,其经由FXML文件打开打开打开,从而获得到应用程序对象的引用将是相当痛苦.

有谁知道这样做的简单方法?

干杯

java javafx javafx-8

11
推荐指数
2
解决办法
8808
查看次数

是否有非java,跨平台的方式来启动某个文件类型的关联应用程序?

首先,我发现了几个特定java的问题和答案.我正在寻找更多"本机",但跨平台的解决方案,使用C,C++,某种shell脚本,或者在我的情况下,Qt.

所以问题是,是否存在标准的,跨平台的,以编程方式打开某些文件类型的关联应用程序的方法.或者至少要找出是否有关联的应用程序,并能够找到并启动它们?

跨平台我指的是Windows,OSX和linux(gnome/kde).该用例是一个数据库,其中存储的文件为blob,将在三个不同的目标上读取.

c++ scripting qt cross-platform launch

9
推荐指数
2
解决办法
2442
查看次数

使用Python脚本打开特定文件类型?

如何使Python脚本成为特定文件类型(例如,*.foo)的默认应用程序?就像我在Finder/Explorer中双击文件一样,我希望在Python脚本中打开文件.

在Win和/或OS X中可以做到这一点吗?该应用程序是一个PySide应用程序,如果这很重要.

python default file-association

9
推荐指数
1
解决办法
3592
查看次数

如何使用Java查找默认文件打开程序?

我需要找到Windows上给定文件的默认文件打开器,以便我可以自定义命令参数并使用默认的opener/viewer打开文件.

我的实际使用场景是使用用户的默认媒体播放器打开多个多媒体文件,以便将所有文件添加到用户的播放列表中(对于可以在同一个媒体上打开多个文件的播放器).对于Windows以外的操作系统我使用Desktop.open(File file)方法(我根本不关心为Windows以外的操作系统打开多个文件功能),我找不到任何方法可以打开多个文件而不是自定义命令参数并使用exec()方法运行它运行时类.我使用类似于此的somethig:

private void playItems2(List<File> fileList, String playerBinary) {
    String args = " ";
    for (File file : fileList) {
        args += "\"" + file.getAbsolutePath() + "\" ";
    }

    try {
        String command = playerBinary + args;
        Runtime rt = Runtime.getRuntime();
        Process p = rt.exec(command);
    } catch (Exception exc) {/*handle exception*/
        System.err.println("Run Player Exc:" + exc.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用用户指定的路径playerBinary,我需要的是自动检测第一项的默认播放器fileList并将其用作playerBinary.

我还查看了Rundll32.exe和cmd.exe/start解决方案,但它们对我的使用场景不起作用.

这个问题不应该与这个这个.

java winapi desktop

5
推荐指数
1
解决办法
1691
查看次数