当前位置: 首页 > 面试题库 >

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

阎渝
2023-03-14
问题内容

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

因为它在压缩前给出大小。


问题答案:

您可以使用Apache commons
IO库中的CountingOutputStream。

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

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



 类似资料:
  • 问题内容: 我必须从用户那里获取用户的名称和地址,并将其放入文本文件中。我写以下代码: 当我运行代码时,它需要用户输入,但文本文件为空。地址和名称未写入文本文件。如何在上面的代码中将名称和地址存储到文本文件中。 问题答案: 您创建的,但从来没有或它。 这些操作是实际写入文件的操作 正如@ManoDestra在注释中指出的那样,Java支持statement,它允许您将语句的格式设置为: 由于实现了

  • 问题内容: 因此,我正在使用 BufferedWriter, 并希望将一些文本写入文本文件。 由于某种原因,正在创建文本文档,但是没有写入任何文本,这是为什么呢? 问题答案: 您需要关闭或使用

  • 问题内容: 我正在做一个实验,我们必须读取一个外部文件,对数据进行一些统计,然后使用统计信息创建和写入新文件。除了编写文件,程序中的所有内容都可以正常工作,我无法理解为什么我的方法不起作用。 问题答案: 您必须冲洗并关闭编写器:

  • 问题内容: 这是代码片段。 编辑:我正在从目录中读取文件。因此,我需要在每个循环中打开阅读器。我进行了一些修改,但同时也没有写入该文件。这是代码: 编辑:我修改了代码,但没有成功, 而且我收到此错误: 编辑:谢谢..我想通了。实际上,我在eclipse中创建了一个目录,但没有刷新它来查看内容。真是太傻了…还是非常感谢 问题答案: 您正在循环内创建FileWritter,因此您将始终在每个循环中截断

  • 问题内容: 我在python中遇到以下问题。 我需要并行执行一些计算,这些计算的结果需要按顺序写入文件中。因此,我创建了一个函数,该函数接收和文件句柄,进行计算并将结果打印到文件中: 但是脚本运行后文件最终为空。我试图将worker()函数更改为: 并将文件名作为参数传递。然后它按我的预期工作。当我尝试按顺序执行相同的操作而不进行多处理时,它也可以正常工作。 为什么它在第一个版本中不起作用?我看不

  • 我想访问服务器B上只能通过服务器a访问的远程文件夹。我在两台机器上都有帐户。 要访问B上的终端,我首先通过ssh连接到A,然后跳转到B。要使用B上的端口,我也会这样做,通过ssh隧道建立端口映射。 但是,要使用fish之类的协议从图形文件管理器(如dolphin)访问B上的文件夹,我该怎么做?如何建立中间连接? 我尝试了一种间接的方法,从本地主机:端口到中间机器,从中间机器到目标机器,并连接到fi