ホームページ >バックエンド開発 >Golang >スライスを使用してファイルの書き込みと読み取りを行う

スライスを使用してファイルの書き込みと読み取りを行う

DDD
DDDオリジナル
2024-11-10 09:16:02954ブラウズ

GO writing and reading files with slices

1. スライスを使用してファイルを操作する必要がある可能性

最近プログラミング タスクを解決したところ、行のスライスを取得し、処理された行をディスクに保存できるメソッドが存在しないことがわかりました。もちろん、文字列を文字列のスライスに分割して、そのスライスを使用することもできますが、一度パッケージを作成して、必要なときにいつでも簡単に使用したいと考えています。

そうですね、次のような方法が考えられます:

  1. ファイルの内容を読み取り、タプル []string,error を返す ReadAllLines
  2. WriteAllLines で文字列のスライスを書き込みます
  3. AppendAllLines を使用して、文字列のスライスを既存のファイルの末尾に追加します。

2.1 すべての要件を満たす新しいパッケージ

そこで、そのようなパッケージにどのようなメソッドを持たせるかを決めた後、gfu (gfu は Go File Utils の略) パッケージを作成し、それらを共有したいと思います。github リポジトリを参照してください。

2.1 ReadAllText メソッド

このメソッドは次のことを行います:
1 自動検出行末 (CR、LF、または CRLF) を含む結果のタプル ([]string、error) を返します。
2 スライス項目から行末記号を削除します
3omitEmpty 引数が true に設定されている場合は空行を削除します

例:

lines, err := gfu.ReadAllLines("myFile.txt", true)

2.2 WriteAllText メソッド

このメソッドは次のことを行います:

  1. WriteAllLines 関数の 3 番目の引数で定義された行区切り記号を挿入します
  2. ファイルが存在する場合はファイルを切り詰め、存在しない場合はファイルが作成されます

例:

lines := []string{
"{",
"    \"id\": 1,",
"    \"name\": \"Michael Ushakov\"",
"}",
}
file := "write_all_lines_test.txt"
err := gfu.WriteAllLines(file, lines, "\n")

2.3 AppendAllText メソッド

WriteAllLines はファイルの内容を上書きしますが、既存のファイルに行部分を追加する必要がある場合はどうすればよいでしょうか?シグネチャ上、WriteAllLines:
と同一の AppendAllLines 関数を使用する必要があります。

lines := []string{
"{",
"    \"id\": 1,",
"    \"name\": \"Michael Ushakov\"",
"}",
}
file := "append_all_lines_test.txt"
err := gfu.WriteAllLines(file, lines, "\n")

additionalLines := []string{
"{",
"    \"id\": 2,",
"    \"name\": \"Alex Petrov\"",
"}",
}

err := gfu.AppendAllLines(file, lines, "\n")

3. 結論

これらの関数はすべて非常に便利で、小さなパッケージにまとめられています。また、これらすべての関数に対してテストが記述されているため、信頼できると考えることができます。そして私はソフトウェア開発の旅をさらに続けます。このパッケージが役に立ったと思われる場合は、星を付けることを忘れないでください。

以上がスライスを使用してファイルの書き込みと読み取りを行うの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。