私の質問:ファイルをディスクに保存せずに (システムの既定の [外部] プログラムで) ファイルを開くにはどうすればよいですか?
私の状況:リソースにファイルがあり、それらを最初にディスクに保存せずに表示したいと考えています。たとえば、ファイルがあり、最初にディスクに保存せずに、ファイルxml
を読み取るためのデフォルトのプログラムでユーザーのマシンで開きたいとします。xml
私がやっていること:これまでのところ、ファイルを一時的な場所に保存しただけですが、ファイルがいつ不要になるかを知る方法がないため、いつ/削除するかはわかりません。そのための私のSSCCEコードは次のとおりです (リソースを除いて、ほとんどが sscce です...自分で作成する必要があります)。
package main;
import java.io.*;
public class SOQuestion {
public static void main(String[] args) throws IOException {
new SOQuestion().showTemplate();
}
/** Opens the temporary file */
private void showTemplate() throws IOException {
String tempDir = System.getProperty("java.io.tmpdir") + "\\BONotifier\\";
File parentFile = new File(tempDir);
if (!parentFile.exists()) {
parentFile.mkdirs();
}
File outputFile = new File(parentFile, "template.xml");
InputStream inputStream = getClass().getResourceAsStream("/resources/template.xml");
int size = 4096;
try (OutputStream out = new FileOutputStream(outputFile)) {
byte[] buffer = new byte[size];
int length;
while ((length = inputStream.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
inputStream.close();
}
java.awt.Desktop.getDesktop().open(outputFile);
}
}