這是學校OOP的作業2
雖然有在碰Linux,但是一些相關的檔案格式卻沒了解很多,這次的作業雖然沒啥難度,但是還蠻有趣的
要求是能正確讀出tar檔案格式的內容並將其內容顯示出來
另外還需判是否是USTAR格式,非USTAR則不讀取檔案,直接跳出
USTAR基本上每個block的大小為512bytes,所以檔案大小為512的倍數
且在Header的部份的第257個bytes向後數6個bytes的內容為"ustar "
依照上面的兩種特性就能判斷是否為USTAR格式的文件
另外,USTART內部文件的組成大致上是Header + Content + Header2 + Contetnt2 + .....
Header佔一個block,Content則視其大小決定,Content若有不足一個block,後方則補0x00
比如說Content大小為513 bytes,則第二個block的前1個byte為Content的內容,剩下511個bytes全數補0x00,所以以這例子來說,Content > 512 但 <= 1024,這個Content實際上佔掉了2個block
若只是單純想要讀取tar裡有哪些檔案的話,只需要拿到Header的資料即可
另外,tar的最後兩個block都會以0x00填滿來表示終結字符
以下是執行結果
是USTAR格式的檔案:
非USTAR格式的檔案:
雖然有在碰Linux,但是一些相關的檔案格式卻沒了解很多,這次的作業雖然沒啥難度,但是還蠻有趣的