我已经阅读了这个Reading a resource file from within jar但是我无法弄清楚如何获取文件而不是输入流,这就是我需要的。这是代码:
private void duplicateDocument() {
FileOutputStream fos = null;
File file;
try {
try {
doc = new File(getClass().getResource("1.docx").toURI());
//doc = new File(getClass().getResourceAsStream("1.docx"));
} catch (URISyntaxException ex) {
Logger.getLogger(ForensicExpertWitnessReportConfigPanel.class.getName()).log(Level.SEVERE, "Failed ...", ex);
}
file = new File("C:\\Users\\student\\Documents\\myfile.docx");
fos = new FileOutputStream(file);
/* This logic will check whether the file
* exists or not. If the file is not found
* at the specified location it would create
* a new file
*/
if (!file.exists()) {
file.createNewFile();
}
/*String content cannot be directly written into
* a file. It needs to be converted into bytes
*/
byte[] bytesArray = FileUtils.readFileToByteArray(doc);
fos.write(bytesArray);
fos.flush();
System.out.println("File Written Successfully");
}
catch (IOException ioe) {
ioe.printStackTrace();
}
finally {
try {
if (fos != null)
{
fos.close();
}
}
catch (IOException ioe) {
System.out.println("Error in closing the Stream");
}
}
}
FileUtils.readFileToByteArray是我迄今为止唯一能够工作的东西,这就是为什么我需要一个文件而不是一个输入流。
目前,上面的代码给出了“一个java.lang.IllegalArgumentException”,这就是为什么我在网上看到一个使用getResourceAsStream()的建议 - 但是却无法将其作为文件返回。
我的下一个选择是试用Reading a resource file from within jar - 缓冲读卡器。
有人可以帮忙吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
我得到了它,使用它:
InputStream in = getClass().getResourceAsStream("1.docx");
byte[] bytesArray = IOUtils.toByteArray(in);