代码之家  ›  专栏  ›  技术社区  ›  Gandalf

javanioservlet到文件

  •  7
  • Gandalf  · 技术社区  · 14 年前

    有没有一种方法(不缓冲整个Inputstream)从javaservlet获取HttpServletRequest并使用所有NIO将其写入文件?值得一试吗?从普通的java.io流读取并写入java.nio通道会更快吗?还是两者都需要纯nio才能看到好处?谢谢。

    Averages:
    InputStream -> OutputStream : 321 ms.
    FileChannel -> FileChannel  :   3 ms.
    InputStream -> FileChannel  : 600 ms.
    

    4 回复  |  直到 14 年前
        1
  •  7
  •   erickson    14 年前

    纯NIO解决方案的主要好处是可以避免将数据从内核复制到用户和内核空间。当你使用 transferTo() transferFrom() 操作时,可以避免此开销,并且通道之间的传输可以非常快(取决于底层实现)。

    但是,Servlet API不允许您访问源代码 Channel ; 当servlet看到数据时,它们已经在用户空间中了。所以我不指望从写作到写作能提高成绩 渠道

        2
  •  1
  •   mdma    14 年前

    HttpServletRequest为您提供了一个常规的“拉”输入流—不知道在这里使用NIO会有什么帮助。

        3
  •  1
  •   irreputable    14 年前

    由于API的选择,磁盘不会转得更快。FileChannel中发生了什么->FileChannel可能是在写操作实际提交到磁盘之前返回的调用。

    nio

        4
  •  0
  •   BalusC    14 年前

    java.io 已经足够了。