Javaプログラムでメモ帳を開きたい。このボタンをクリックすると、メモ帳が表示されるボタンが1つあるとします。すでにファイル名とディレクトリがあります。
このケースをどのように実装できますか?
試してみてください
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().edit(file);
} else {
// dunno, up to you to handle this
}
ファイルが存在することを確認してください。これを指摘してくれたAndreas_Dに感謝します。
(メモ帳で「myfile.txt」を開くと仮定します:)
ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt");
pb.start();
Windowsプログラムnotepad.exe
を起動したい場合は、 exec
関数を探しています。あなたはおそらく次のようなものを呼びたいでしょう:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("C:\\path\\to\\notepad.exe C:\\path\\to\\file.txt");
たとえば、私のマシンでは、メモ帳はC:\Windows\notepad.exe
にあります。
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("C:\\Windows\\notepad.exe C:\\test.txt");
これにより、test.txtファイルを編集用に開いた状態でメモ帳が開きます。
実行元の作業ディレクトリであるexec
に3番目のパラメータを指定することもできることに注意してください。したがって、プログラムの作業ディレクトリに関連して保存されているテキストファイルを起動できます。
String fileName = "C:\\Users\\Riyasam\\Documents\\NetBeansProjects\\Student Project\\src\\studentproject\\resources\\RealWorld.chm";
String[] commands = {"cmd", "/c", fileName};
try {
Runtime.getRuntime().exec(commands);
//Runtime.getRuntime().exec("C:\\Users\\Riyasam\\Documents\\NetBeansProjects\\SwingTest\\src\\Test\\RealWorld.chm");
} catch (Exception ex) {
ex.printStackTrace();
}
IDE(Eclipse)では、 "C:\ path\to\notepad.exe C:\ path\to\file.txt"について比較します。したがって、私は次のものを使用しました。私と私のIDE幸せ:o)を維持するこれが他の人の助けになることを願っています。
String fpath;
fPath =System.getProperty("Java.io.tmpdir")+"filename1" +getDateTime()+".txt";
//SA - Below launches the generated file, via Explorer then delete the file "fPath"
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("Explorer " + fPath);
Thread.sleep(500); //lets give the OS some time to open the file before deleting
boolean success = (new File(fPath)).delete();
if (!success) {
System.out.println("failed to delete file :"+fPath);
// Deletion failed
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
[〜#〜] swt [〜#〜] を使用すると、任意のファイルを起動できます。Windowsでテキストのダブルクリックをエミュレートする場合は、プレーンなJREだけでは不可能です。 SWTなどのネイティブライブラリを使用し、次のコードを使用してファイルを開くことができます。
org.Eclipse.swt.program.Program.launch("c:\path\to\file.txt")
サードパーティのライブラリを使用したくない場合は、notepad.exeがどこにあるか(またはPATHに表示されているか)を知っておく必要があります。
runtime.exec("notepad.exe c:\path\to\file.txt");
Apache common-exec は、外部プロセスの実行を処理するための優れたライブラリです。
更新:あなたの質問に対するより完全な答えが見つかります ここ
コマンドラインで次のコマンドを使用してメモ帳を起動すると、これを最も効果的に行うことができます:start notepad
String[] startNotePadWithoutAdminPermissions = new String[] {"CMD.EXE", "/C", "start" "notepad" };
文字列コマンドの配列を保存し、execでパラメータのように指定します
Process runtimeProcess = Runtime.getRuntime().exec(startNotepadAdmin2);
runtimeProcess.waitFor();