【问题标题】:How to convert InputStream to instance File?如何将 InputStream 转换为实例文件?
【发布时间】:2015-12-12 17:42:56
【问题描述】:

我想将 InputStream 转换为 File 的实例。 我在谷歌上搜索了很多,但所有的答案都是将 InputStream 作为文件保存在文件系统中。 谢谢!

【问题讨论】:

  • 你想把它保存在哪里?
  • 你读过this tutorial吗?
  • @BuhakeSindi,该链接给出了将 File 转换为 InputStream 并将 InputStream 写入 File 的示例,而不是 OP 要求的
  • @sharonbn 好吧,这是 OP 拥有 File 的“实例”的唯一方法是将 InputStream 的内容保存到文件中,然后使用文件的引用本身。没有别的办法。
  • @BuhakeSindi,给出的答案“你不能,一般来说”是正确的。该教程不是“最接近”的答案,它只是关于 OP 所要求的不正确的答案

标签: java file inputstream


【解决方案1】:

一般来说,你不能。

InputStream 不一定与文件系统中的文件相关联。例如,它可能连接到套接字或管道……或某种内存缓冲区。

即使在 FileInputStream 的特定情况下,也无法使用纯 Java 获取文件。

  • 在某些 Java 版本(例如 Java 7 和 Java 8)中,路径名可能记录在私有 path 字段中。如果是,那么您可以使用“讨厌的”反射来检索它。

  • 在其他版本的 Java(例如 Java 6)中,path 字段不存在。

如果您这样做,您的代码将无法与旧版本的 Java 一起使用,并且也不能保证在未来的版本中也可以使用。这是个坏主意,IMO。

【讨论】:

  • FileInputStream 有一个 path 字段(至少在 Java8 中) - 使用反射可以检索它。不是我建议这样做:)
  • 我的错误。刚刚看了Java 6版本的源码。
猜你喜欢
  • 1970-01-01
  • 2011-05-18
  • 2018-11-20
  • 2011-04-12
  • 2011-12-12
  • 2011-02-19
  • 2013-06-11
  • 2016-04-11
  • 2020-02-27
相关资源
最近更新 更多