java - 为什么我的文本文件比我的二进制文件大?
问题描述
我正在尝试将大文本文件写入二进制文件,但二进制文件与我的文本文件大小相同。我认为写入二进制文件会压缩它?写入二进制文件是否更有效?如何最小化我的文本文件的存储以供使用?
ArrayList<String> strArr = new ArrayList<String>();
File f = new File("words.txt");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));
DataOutputStream out = new DataOutputStream (
new BufferedOutputStream(
new FileOutputStream("word.ser")
));
byte[] buffer = new byte[8192]; // or more, or even less, anything > 0
int count;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
in.close();
out.close();
/*ObjectOutputStream oos = new ObjectOutputStream(
new BufferedOutputStream(
new FileOutputStream("words.ser")
)); */
System.out.println(f.length());
File file = new File("words.ser");
System.out.println(file.length());
解决方案
要压缩文件,您可以例如gzip它。
在 Java 中,您可以这样做:
Path inFile = Paths.get("words.txt");
Path outFile = Paths.get("words.txt.gz");
try (OutputStream out = new GZIPOutputStream(Files.newOutputStream(outFile))) {
Files.copy(inFile, out);
}
推荐阅读
- python - Python - 没有名为“fabric.api”的模块 - Windows 10
- matlab - MATLAB for 循环遍历列以绘制多条线
- asp.net-core - 从 AKS kubernetes 群集中检索已部署的 ASP.Net 核心 Web 应用程序的环境机密
- hadoop - 使用 HQL 将数据从一个表转置到另一个表
- php - 出现错误-试图获取非对象的属性
- java - 如何将 RDF Turtle 转换为 Java Bean
- c# - 根据多个用户角色填充下拉列表
- regex - 如何在 PHP 中将字符串与字符串前后的变量文本匹配?
- python - Matplotlib:ListedColormap 不映射颜色
- python - Flask - 400 错误请求