Java 文本文件大小(文件关闭前)

标签 java file filewriter file-writing

我正在从一项服务中收集完整的 HTML,该服务提供对大量博客和新闻网站的访问。我正在(实时)检查 HTML,看它是否包含一些关键字。如果它包含其中一个关键字,我会将 HTML 写入文本文件以进行存储。

我想做一个星期。因此,我正在收集大量数据。对该程序进行 3 分钟的测试产生了一个 100MB 的文本文件。我有 4 TB 的空间,不能超过这个空间。

此外,我不希望文本文件变得太大,因为我认为它们将变得无法打开。

我的建议是打开一个文本文件,然后向其中写入 HTML,并经常检查其大小。如果它变得大于,比方说 200MB,我关闭文本文件并打开另一个。我还需要保留一个运行日志,记录我总共使用了多少空间,以确保我不会接近 4 TB。

此时我的问题是如何在文件关闭之前检查文本文件的大小(使用 FileWriter.close())。是否有此功能,或者我应该计算写入文件的字符数并使用它来估计文件大小?

一个单独的问题:有没有办法最大限度地减少我的文本文件占用的空间量?我在 Java 工作。

最佳答案

创建一个 writer 来计算写入的字符数并使用它来包装您的 OutputStreamWriter

[编辑]注意:将文本保存到文件的正确方法是:

new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file ), encoding ) ) );

编码很重要;它通常是“UTF-8”。

这个链为您提供了两个可以注入(inject)包装器的地方:您可以包装 writer 以获取字符数或内部 OutputStream 以获取写入的字节数。

关于Java 文本文件大小(文件关闭前),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8214607/

相关文章:

java - ReentrantReadWriteLock - 在 if - else block 中锁定/释放

java - 为 CRUD 操作自动生成 spring-rest 架构?

java - 3D 空间中的轴对齐边界框和三角形碰撞

java - 无法从目录读取文件

file - NTFS $MFT 文件可以有子记录吗?

java - 如何在java中将附加选项和StandardCharsets/Encoding设置为BufferedWriter?

使用 Jersey/JAXB/Jackson 将 Java.util.Map 映射到 JSON 对象

java - 序列化对象文件输出为空

Java - 使用 IO - 说明

java - 在java中连续写入一行文本