2011-01-27 26 views
2

我遇到FileBackedOutputStreamGoogle Guava库,并想知道它是否适合用作缓冲区类型:每天一次,我的web应用程序中的进程会生成数以万计的行包含约100个字符),然后上传到FTP服务器上的文件。我正在考虑使用FileBackedOutputStream对象首先将所有这些字符串写入,然后使用FileBackedOutputStream.getSupplier().getInput()访问我的FTP客户端,它将返回InputStream。这是否是FileBackedOutputStream的正确用例?FileBackedOutputStream用例(番石榴)

+0

如果你想要一个InputStream,为什么不使用ByteArrayOutputStream和ByteArrayInputStream?它可能更简单,更高效。 – 2011-01-27 14:01:23

回答

2

是的,我认为这将是一个可接受的用例FileBackedOutputStream。不过,我认为FileBackedOutputStream最适合用于数据可能相差很大的数据......对于少量数据可以适应内存而不会出现问题的情况下,您只需将它们缓存在内存中,但对于大量数据可能会给你一个OutOfMemoryError如果你试图把它全部读到内存中,你想切换到缓冲到一个文件。这是我认为FileBackedOutputStream真正闪耀的地方。我用它来缓冲我需要做的几件事情上传的文件。