如何知道我使用GzipStream的壓縮文件的大小?我知道它有一個標題和後綴。前10個字節 - 它是標題,第二個8字節 - 後綴。我如何知道後綴中的大小文件?Gzipstream頭文件和後綴
0
A
回答
-1
該文件的最後四個字節包含未壓縮的文件大小。
據this post,下面的代碼會給你的文件的大小:
RandomAccessFile raf = new RandomAccessFile(yourGzipFile, "r");
raf.seek(raf.length() - 4);
int b4 = raf.read();
int b3 = raf.read();
int b2 = raf.read();
int b1 = raf.read();
int filesize = (b1 << 24) | (b2 << 16) + (b3 << 8) + b4;
raf.close();
filesize
將包含文件大小。
編輯:Appologies,我注意到你已經用C#標記了你的帖子,但是上面的代碼是用於Java的,儘管上面的代碼肯定會把你放在正確的道路上。
祝你好運。
---- ----編輯
按照由@gusman作出評論,我在編輯這條評論,這樣的向下票可以被刪除。請參閱my other answer below瞭解我的替代代碼示例。
0
我看到你投下了我以前的回答很可能是因爲它是一個使用Java的例子。原理仍然是一樣的,所以你的問題的答案是最後4個字節包含你需要的信息。希望這個答案更符合你的想法。
這裏是解壓gzip的包容性越來越被GZipStream
使用的壓縮文件的大小的C#Decompress
功能例如:
static public byte[] Decompress(byte[] b)
{
MemoryStream ms = new MemoryStream(b.length);
ms.Write(b, 0, b.Length);
//last 4 bytes of GZipStream = length of decompressed data
ms.Seek(-4, SeekOrigin.Current);
byte[] lb = new byte[4];
ms.Read(lb, 0, 4);
int len = BitConverter.ToInt32(lb, 0);
ms.Seek(0, SeekOrigin.Begin);
byte[] ob = new byte[len];
GZipStream zs = new GZipStream(ms, CompressionMode.Decompress);
zs.Read(ob, 0, len);
returen ob;
}
0
東西好一點寫:
public int GetUncompressedSize(string FileName)
{
using(BinaryReader br = new BinaryReader(File.OpenRead(pathToFile))
{
br.BaseStream.Seek(SeekOrigin.End, -4);
return br.ReadInt32();
}
}
相關問題
- 1. 後綴文件夾
- 2. GZipStream和DeflateStream產生更大的文件
- 3. 紅寶石「需要」和文件後綴
- 4. GzipStream文件塊壓縮
- 5. 從mv文件中刪除前綴和後綴
- 6. 後綴配置和附件
- 7. golang和後綴 - 電子郵件的接收的頭爲localhost
- 8. 蝙蝠前綴帶有文件夾字符和後綴日期的文件名
- 9. Xcode前綴頭文件不編譯
- 10. Bukkit前綴和後綴
- 11. ANSI C和C99文字前綴和後綴列表
- 12. GZipStream提供零字節文件
- 13. 將壓縮的gzipstream寫入文件
- 14. 使用GZipStream追加壓縮文件
- 15. GZipStream不讀取整個文件
- 16. GZipStream沒有讀取整個文件
- 17. 使用GZipStream解壓縮.gz文件
- 18. C#GZipStream壓縮不寫入文件
- 19. Objective-C:Xcode前綴頭文件(.pch文件)冗餘#import
- 20. 比較兩個文件(fasta和txt),如果匹配,然後將前綴fasta頭與txt文件的值
- 21. 如何保存和遞增後綴的文件 - 文件1,文件2,等
- 22. 源文件和頭文件
- 23. Java前綴和後綴操作數
- 24. RegEx替換前綴和後綴
- 25. 前綴和後綴來使用python
- 26. Microsoft Word的前綴和後綴工具?
- 27. JacORB:更改前綴和後綴
- 28. 超載後綴和前綴運營商
- 29. 中綴後綴
- 30. 如何過濾帶有特定前綴和後綴(擴展名)的文件名?
請說明降級?謝謝 – WizzKidd
這是Java,而不是C#。在某些情況下,C#和Java可以非常相似並且可以接受使用c#或c#與java一起回答java,但在這種情況下,代碼是完全不同的。 – Gusman
如果你編輯你的答案,並將其他答案放在這裏,我將刪除否定的投票,我不能刪除,除非你修改答案,S.O.不允許。 – Gusman