我的问题:如何在不先将文件保存到磁盘的情况下打开文件(使用系统默认[外部]文件程序)?
我的情况:我有资源中的文件,我想直接显示它们而不必先将它们保存到磁盘。例如,我有一个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);
}
}