java - 计算通过 GZIPOutputStream 形成的 BufferedWriter 写入文件的字节数

标签 java outputstream bufferedwriter gzipoutputstream

我有一个BufferedWriter,如下所示:

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
        new GZIPOutputStream( hdfs.create(filepath, true ))));

String line = "text";
writer.write(line);

我想找出写入文件的字节,而不像查询文件那样

hdfs = FileSystem.get( new URI( "hdfs://localhost:8020" ), configuration );

filepath = new Path("path");
hdfs.getFileStatus(filepath).getLen();

因为它会增加开销,但我不希望这样。

我也不能这样做:

line.getBytes().length;

因为它给出了压缩前的大小。

最佳答案

您可以使用CountingOutputStream来自 Apache Commons IO 库。

将其放在 GZIPOutputStream 和文件 Outputstream (hdfs.create(..)) 之间。

将内容写入文件后,您可以从 CountingOutputStream 实例中读取写入的字节数。

关于java - 计算通过 GZIPOutputStream 形成的 BufferedWriter 写入文件的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571051/

相关文章:

java - HQL 子查询查询选择

c++ - format() 中 int fmt 的值

Java - 打开txt文件并清除所有多个空格

Java BufferedWriter,OutputStreamWriter 能够写入关闭的 FileOutputStream

java - Java 中具有抽象方法签名的可见性修饰符

java - 如何创建批处理文件并使用参数执行 jar 文件

java - 作为管道写入 Java Process/ProcessBuilder 的 OutputStream

Java:复制文本文件时覆盖一个字符

java - 使用 JNDI 配置数据源 使用外部 Tomcat 9 服务器 : Spring Boot

java套接字输出流和破管