1

私は Java SE 6 を使用しており、事前定義されたプログラムによって外部プロセスでファイルを開きたいと考えています。現在、たとえばpdfファイルに次のコードを使用しています。

ウィンドウズ:

public static Process openFile(File file) {
    return Runtime.getRuntime().exec("C:/Program Files (x86)/Adobe/Reader 10.0/Reader/AcroRd32.exe \""+file.getAbsolutePath()+"\"");
}

Ubuntu Linux:

public static Process openFile(File file) {
    return Runtime.getRuntime().exec("/usr/bin/evince \""+file.getAbsolutePath()+"\"");
}

Windows では、これはすべてのファイルに対して問題なく機能します。しかし、ubuntu では、ファイル パス内にスペースがあるとすぐに、複数のファイルを開こうとします。次に例を示します。

contract.pdf -> works on windows and ubuntu
contract 1 (copy).pdf -> works only on windows, ubuntu tries to open 3 different files (contract, 1, and (copy).pdf)

スペースを含むファイルパスを1つのファイルとして処理する必要があることをubuntuに伝えるには、どの特殊文字が必要ですか?

事前にご協力いただきありがとうございます。よろしくお願いします

4

1 に答える 1

4

Desktop.openを使用してみます

関連するアプリケーションを起動してファイルを開きます。

指定されたファイルがディレクトリの場合、現在のプラットフォームのファイル マネージャが起動されて開きます。

または、試すことができます

return Runtime.getRuntime().exec(new String[]{ 
        "/usr/bin/evince", file.getAbsolutePath() });
于 2012-12-15T11:22:04.257 に答える