java - java中未压缩文件的大小

标签 java bzip2 compression

我正在尝试使用以下代码查找未压缩的 bz2 文件的大小。但是,运行代码后,我得到的大小为 0 字节。不知道出了什么问题。有谁可以指点一下吗?

try{
                FileInputStream fin = new FileInputStream("/users/praveen/data1/00.json.bz2");
                BufferedInputStream in = new BufferedInputStream(fin);


                BZip2CompressorInputStream bzIn = new BZip2CompressorInputStream(in);
                  long size = 0;
                  while (bzIn.available() > 0)
                  {
                    byte[] buf = new byte[1024];
                    int read = bzIn.read(buf);
                    if (read > 0) size += read;
                  }

                  System.out.println("File Size: " + size + "bytes");
                  bzIn.close();
                //bzIn.close();
                }
                catch (Exception e) {
                throw new Error(e.getMessage());
                } 

最佳答案

BZip2CompressorInputStream 很可能没有完全实现 available() 方法。它可能只返回 0。相反,您应该尝试使用 InputStream#read(byte[]) 并检查 -1 返回。

关于java - java中未压缩文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31461691/

相关文章:

python - 正确构建本地python3,支持bz2

c# - 如何使用霍夫曼编码查找文件的压缩比

java - 优化 Java 中的 Ungunzipping 过程?

java - Jersey 在 POST 上使用 JSON

java - 使用嵌套 addValueEventListener 时 Android firebase 错误

java - 我不明白这里的错误。是括号吗? Eclipse Java 7

java - 在 onConfigurationChanged 中更改图像旋转

python - 如何在 Python 中读取损坏的 tar.bz2 文件?

c# - 将.bz2 流解压缩到 C# 中的文件

php - 使用 php 在 gzopen 中解压缩大型 gzip 文件的缓冲区大小是多少?