2017-02-12 73 views
3

我正試圖從Go文件中找到一個從文件中讀取前兩個字節的好方法。從文件中有效讀取前兩個字節 - Golang

我在我的當前目錄中有一些.zip文件,與其他文件混合在一起。

我想遍歷目錄中的所有文件,並檢查前兩個字節是否包含正確的.zip標識符,即50 4B

什麼是使用標準庫完成此操作而不必讀取整個文件的好方法?

通過在io包中可用的功能去我設法找到:

func LimitReader(r Reader, n int64) Reader 

這似乎是適合我的描述,從Reader閱讀(?我如何獲得一個Reader),但之後n字節停止。由於我對Go比較陌生,所以我不確定如何去做。

+0

os.File你用os.Open(「path」)獲得的文件是一個讀者 – Uvelichitel

回答

5

通過打開文件獲得最初的讀者。對於2個字節,我不會使用LimitReader。只要用io.ReadFull讀取2個字節就容易了。

r, err := os.Open(file) 
if err != nil { 
    return err 
} 

defer r.Close() 

var header [2]byte 
n, err := io.ReadFull(r, header[:]) 
if err != nil { 
    return err 
}