Мой вопрос: как открыть файл (в системной [внешней] программе по умолчанию для файла) без сохранения файла на диск?
Моя ситуация: у меня есть файлы в моих ресурсах, и я хочу отобразить их без предварительного сохранения на диск. Например, у меня есть файл 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);
}
}