Golang は、Web アプリケーション、ネットワーク ツール、データ処理、オペレーティング システムの開発に広く使用されている効率的で最新のプログラミング言語です。この記事では、Golang を使用してファイルを処理する方法を紹介します。
Golang でファイルを読み取るには、主に 2 つの方法があります。os パッケージの関数を使用する方法と、bufio パッケージの Reader オブジェクトを使用する方法です。
os パッケージは、ファイルを開く、読み取る、閉じるための Open、Read、Close およびその他の関数を提供します。簡単な例を次に示します。
package main import ( "fmt" "log" "os" ) func main() { file, err := os.Open("test.txt") if err != nil { log.Fatal(err) } defer file.Close() data := make([]byte, 100) count, err := file.Read(data) if err != nil { log.Fatal(err) } fmt.Printf("read %d bytes: %q\n", count, data[:count]) }
上の例では、まず os.Open 関数を使用して test.txt という名前のファイルを開きます。ファイルが存在する場合は、ファイルへのポインタと nil が返され、存在しない場合は、nil ポインタとエラー メッセージが返されます。
次に、defer ステートメントを使用して、ファイルを閉じるのを忘れないように、関数の終了後にファイルが閉じられるようにします。
次に、make 関数を使用して、ファイルの内容を読み取るための 100 バイトのスライスを作成します。読み取りの場合、Read 関数はスライスに読み取り内容を埋め込み、読み取ったバイト数を返します。バイト数がスライス サイズより小さい場合は、ファイルが読み取られたことを意味します。
最後に、Printf 関数を使用して、読み取られたバイト数とコンテンツをコンソールに出力します。 %q フォーマット表記を使用すると、バイト スライスを文字列に変換し、非 ASCII 文字を 8 進数にエスケープできることに注意してください。
bufio パッケージは、ファイルの内容を読みやすくする Reader および Scanner タイプを提供します。以下は、Reader を使用してファイルを読み取る例です。
package main import ( "bufio" "fmt" "log" "os" ) func main() { file, err := os.Open("test.txt") if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal(err) } }
この例では、前の例と同様に、最初に os.Open 関数を使用して test.txt ファイルを開きます。次に、bufio.NewScanner 関数を使用して Scanner タイプのオブジェクトを作成します。これは、ファイルの内容を 1 行ずつ読み取るのに役立ちます。
ループでは、Scanner タイプの Scan() 関数が呼び出されるたびに、ファイルの次の行を読み取って返します。ファイルの末尾を読み取ると false が返され、ループが終了します。
最後に、scanner.Err()を使用して、読み取り処理中にエラーが発生したかどうかを確認し、コンソールに出力します。
Golang は、ファイルの読み取りに加えて、ファイルの内容を書き込むための便利な API も提供します。 OS パッケージまたは bufio パッケージの Writer タイプを使用してファイルを書き込むことができます。
次は、os パッケージを使用してファイルを書き込む例です:
package main import ( "fmt" "io/ioutil" "log" ) func main() { data := []byte("hello\nworld\n") if err := ioutil.WriteFile("test.txt", data, 0644); err != nil { log.Fatal(err) } fmt.Println("data written to file") }
この例では、バイト スライスに書き込まれるコンテンツを定義します。次に、ioutil.WriteFile 関数を使用して、そのバイト スライスを test.txt という名前のファイルに書き込みます。この機能は、自動的にファイルを作成し、その内容を書き込み、元のファイルの内容を上書きします。最後に、ファイルが正常に書き込まれたことをユーザーに通知するメッセージをコンソールに出力します。
OS パッケージの OpenFile、Write、および Close 関数を使用して、ファイル ストリームを手動で作成し、コンテンツを書き込むこともできます。
package main import ( "fmt" "log" "os" ) func main() { file, err := os.OpenFile("test.txt", os.O_WRONLY|os.O_CREATE, 0644) if err != nil { log.Fatal(err) } defer file.Close() data := []byte("hello\nworld\n") if _, err := file.Write(data); err != nil { log.Fatal(err) } fmt.Println("data written to file") }
この例では、最初にファイルを作成し、次に、ファイルの内容を書き込みます。 OpenFile 関数を使用する場合は、2 番目のパラメータを指定してファイルのオープン モードをプログラムに伝える必要があることに注意してください。 os.O_WRONLY は書き込み専用モードを表し、os.O_CREATE はファイルが存在しない場合にファイルを作成することを表し、ファイル許可ビットとして 0644 を使用します。
次の表は、一般的に使用されるファイル操作関数の一覧です。
関数 | 関数 |
---|---|
新しいファイルの作成 | |
ファイルを開く | |
指定されたモード | |
ファイルを閉じる | |
ioutil.ReadFile | |
#ioutil.WriteFile | #バイト スライスをファイルに書き込みます |
ファイルの内容を 1 行ずつ読み取るためのスキャナーの作成 | |
ライター インサーターの作成 (使用)データをキャッシュし、書き込みパフォーマンスを向上させ、キャッシュがいっぱいになったときにファイルを 1 回だけ書き込むための | |
概要 | Golang を使用してファイルのコンテンツを処理することは、非常に一般的なタスクです。 。この記事では、Golang の os パッケージと bufio パッケージを使用してファイルを読み書きする方法を紹介し、一般的に使用されるファイル操作関数のリストも示します。テキスト ファイルでもバイナリ ファイルでも、Golang を使用すると簡単に処理できます。 Golang のファイル処理についてまだ疑問がある場合は、公式ドキュメントや関連するサードパーティのドキュメントを参照し、さらにコードを記述して、より多くのスキルを習得できます。 |
以上がGolangを使用してファイルを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。