【问题标题】:Java - processing file in memory without the disk R/WJava - 在没有磁盘的情况下处理内存中的文件 R/W
【发布时间】:2014-05-20 20:04:57
【问题描述】:

我正在通过套接字接收文件 并将它们保存到数据库中。

所以,我正在接收字节流并传递它 到后端进程,比如 Process1 用于数据库保存。

我希望在不保存的情况下执行此操作 磁盘上的流。所以,而不是存储传入的流 作为磁盘上的文件,然后将该文件传递给Process1, 我希望在它还在记忆中的时候通过它。 这是为了消除耗时的磁盘读写。

我可以做的一种方法是将 byte[] 传递给 Process1。 我想知道是否有更好的方法来做到这一点。

TIA。

【问题讨论】:

  • 保存在ByteArrayOutputStream?但它当然会吃掉堆空间
  • @fge 会调查它——似乎是我正在寻找的东西。为我处理 byte[] 长度 n (?)
  • 确实会,是的。堆饿了,但它会
  • 把它写成 ans & 我会接受它。

标签: java file memory disk


【解决方案1】:

您可以使用ByteArrayOutputStream。本质上,它是一个可增长的byte[],您可以随意写入,即在可用堆空间的限制内。

在写入/刷新/关闭它之后(尽管最后两个操作本质上是空操作,这不是放弃理智做法的理由),您可以使用此类的 .toByteArray() 获取底层字节数组。

【讨论】:

    【解决方案2】:

    Socket 听起来像您正在寻找的东西。

    【讨论】:

    • 他已经有一个 Socket:“我正在通过 socket [...] 接收文件”
    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2014-02-04
    相关资源
    最近更新 更多