我有一个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/