java - 如何将InputStream对象转换为File对象?

标签 java html file servlets jakarta-ee

我试图在从 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/

相关文章:

file - 从 Common Lisp 中的文本文件中读取序列

java - Gson.toJson 返回 null [ProGuard 问题]

java - 带有来自 Volley 的 json 数据的 MPAndroid 图表

java - 在 TOMCAT 上部署 WAR 文件仅对使用 APPLICATION_JSON 的 REST API 抛出错误

iOS:UIImagePNGRepresentation().writeToFile 未写入预期目录

java - 创建标题为空的文件

Java 事件处理帮助(通知与 EventObject)

html - 是否可以使用 css 制作 "shortcut icon"圆形?

html - 使用 <div> 标签时复制 <li> 点

jquery - 模型形态,我该怎么做