我试图在从 html 表单调用的 servlet 中获取一个"file"实例,在其中我可以选择计算机上的 PDF 文件。 我成功地将文件作为“InputStream”获取,但随后我无法进一步将其转换为“File”对象。
经过多次不同的尝试,我仍然不知道我应该做什么才能让它发挥作用。有什么想法吗?
错误:
java.io.FileNotFoundException: test.pdf (Read-only file system)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at org.apache.commons.io.FileUtils.openOutputStream(FileUtils.java:360)
at org.apache.commons.io.FileUtils.openOutputStream(FileUtils.java:319)
at org.apache.commons.io.FileUtils.copyToFile(FileUtils.java:1552)
at org.apache.commons.io.FileUtils.copyInputStreamToFile(FileUtils.java:1528)
代码:
Part filePart = request.getPart("file");
InputStream fileContent = filePart.getInputStream();
if (fileContent != null)
{
File file = new File(filename.trim() + ".pdf");
FileUtils.copyInputStreamToFile(fileContent, file);
//use the "file" instance
//...
}
最佳答案
正如异常告诉您的那样,问题不在于“创建文件”。问题是磁盘/分区被写保护
您应该在可写的文件系统上创建该文件。尝试指定绝对路径,如
File file = new File("/tmp/" + filename.trim() + ".pdf");
//or
file = new File("/home/userhome/" + filename.trim() + ".pdf");
该文件应该只在可写文件系统上创建。
关于java - 如何将InputStream对象转换为File对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087775/