我需要一些方法來確定文件是否以某種擴展名ex:(rar,tar,tar.gz等)壓縮,它使用的是Linux系統下的C/C++語言。 我讀了一些關於stat和S_IFCMP的內容,但是我不能在linux中使用它,所以,你可以幫我一些替代方法嗎?如何檢查文件是否被壓縮?
回答
有沒有防彈的方式來確定這一點。你可以檢查擴展名。如果您不信任擴展名,那麼您必須查看該文件並檢查簽名。
你可以找到其中一些here。
對stat
的調用不會告訴您有關單個文件被壓縮的情況,因爲此標誌表示文件系統已壓縮。
下面是你可以做的一個小而簡單的例子。您只需檢查文件路徑的字符串,並查看最後幾個字符是否適合它。
//You could set this to anything
std::string filePath = "hello.rar";
if ((filePath.back() - 2 == "r") && (filePath.back() - 1 == "a") && (filePath.back() == "r"))
std::cout << "The file is a .rar" << std::endl;
我希望有幫助!
(P.S,如果你正在尋找一個安全的方法來檢查,這絕對不是你想採取的路徑。)
'filePath.back() - 2'沒有做你認爲的事情。在downvote之前更好地糾正。 –
使用'std :: string :: substr()'將文件擴展名提取到另一個'str :: string',然後比較它,或者使用'std :: string :: compare()'開始位置從結尾開始是4個字符(在比較中應該包括'.'來解釋文件擴展名> 3個字符的長度)。 –
每個文件格式有自己的簽名。沒有通用的方式可以應用於所有壓縮文件格式,如RAR,TAR,TAR.GZ。 各種文件格式的簽名可用於:http://www.garykessler.net/library/file_sigs.html
- 1. 如何檢查文件是否被gzip壓縮?
- 2. 如何檢查壓縮文件或壓縮文件是否存在?
- 3. 推薦的方法來檢查文件是否壓縮/壓縮
- 4. 如何使用.net 3.5檢查壓縮文件是否損壞
- 5. 如何檢查文件是否在HDFS中正確壓縮?
- 6. 如何檢查文件是否被gzip壓縮或不在Firefox /螢火蟲
- 7. Python解壓縮文件並檢查文件是否存在
- 8. 檢查用戶是否有壓縮文件夾或文件
- 9. AS3:如何檢查,所有壓縮文件已被提取?
- 10. 如何判斷文件是否被gzip壓縮?
- 11. 檢查壓縮文件是否受密碼保護
- 12. 如何快速檢測字符串是否被zlib壓縮?
- 13. 如何檢查類文件或jar文件是否被檢測?
- 14. 如何檢查是否gzip壓縮與支持PHP的?
- 15. 如何檢查Subversion 1.6是否打開了壓縮?
- 16. 檢查md5的壓縮文件,而不完全解壓縮
- 17. 檢查一個文件是否存在於zip壓縮文件中
- 18. Java壓縮文件的檢查目錄
- 19. 如何壓縮文件時不壓縮
- 20. 如何驗證文件是否爲PowerShell中的壓縮文件
- 21. 如何檢查一個文件是否被檢出(Clearcase/Python)
- 22. 是否可以通過mixin和/或'XOR'壓縮壓縮文件?
- 23. 是否可以壓縮或壓縮.otf(Open Type Face)文件?
- 24. 如何查找離子壓縮文件的未壓縮大小
- 25. 檢查文件是否已被修改
- 26. 檢查javascript文件是否被加載
- 27. 檢查ELF文件是否被截斷
- 28. 檢查文件是否被使用
- 29. 檢查文件是否被損壞node.js
- 30. 如何檢查Unix .tar.gz文件是否是一個沒有解壓縮的有效文件?
S_IFCMP不會告訴你一個文件是否被壓縮,它是關於被壓縮的文件系統,這是一個非常不同的情況。 – Devolus
您可以使用'文件'命令,或建立自己的。一般而言,您只需要檢查針對libmagic的前幾個字節,或者您可以信任擴展......這不是很安全。 –