2017-02-12 19 views
3

私は、Goを使ってファイルから最初の2バイトを読み取る良い方法を見つけようとしています。ファイルから効率的に最初の2バイトを読み取る - Golang

私の現在のディレクトリには、.zipのファイルがいくつかあり、他のファイルと混在しています。

ディレクトリ内のすべてのファイルをループして、最初の2バイトが右.zipという識別子(つまり50 4B)を含んでいるかどうか確認したいと思います。

ファイル全体を読み取ることなく標準ライブラリを使用してこれを行うには、どのような方法が良いでしょうか? ioパッケージで利用可能な機能を通って行く

は私が見つけることができた:私の記述に合うように思わ

func LimitReader(r Reader, n int64) Reader 

が、それは(?私はReaderを取得するにはどうすればよい)Readerから読み取りますがnバイト後に停止します。私は新しく行くので、どうやって行くのか分かりません。

+0

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 
} 
関連する問題