file_put_contents()
?Goに相当するものは、PHPのfile_put_contents()
os
に相当する直接的な単一機能を持っていません。 ただし、Goの組み込みio
と
単純なファイルライティングの場合、ioutil.WriteFile
(go 1.16で非推奨、代わりにos.WriteFile
を使用)が簡潔なソリューションを提供します。
import ( "os" "io/ioutil" // Or os for newer Go versions ) func main() { data := []byte("This is some text.") err := os.WriteFile("my_file.txt", data, 0644) // 0644 sets permissions if err != nil { panic(err) // Handle errors appropriately - see next section } }
os.OpenFile
os.O_APPEND
import ( "os" ) func main() { file, err := os.OpenFile("my_file.txt", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644) if err != nil { panic(err) // Handle errors appropriately } defer file.Close() data := []byte("This is appended text.") _, err = file.Write(data) if err != nil { panic(err) // Handle errors appropriately } }
小さなデータの塊を繰り返し書きます。ディスクに書き込む前に、os.O_CREATE
インターフェイスとバッファー(if err != nil
など)を使用してデータを蓄積します。 これにより、システム呼び出しの数が大幅に削減され、パフォーマンスが大幅に向上します。file_put_contents()
io.Writer
bufio.Writer
import ( "bufio" "os" ) func main() { file, err := os.Create("large_file.txt") if err != nil { panic(err) } defer file.Close() writer := bufio.NewWriter(file) defer writer.Flush() // Crucial: Flush the buffer to ensure all data is written // Write large amounts of data here, using writer.Write() // ... your code to generate and write large amounts of data ... }
os
またはio
関数呼び出しの後、すぐにif err != nil
。デバッグ目的で、コンテキスト(ファイル名、操作など)でエラーをログに記録します。 <即時の障害。fmt.Errorf
defer file.Close()
特定のファイル形式のライブラリ:import ( "os" "io/ioutil" // Or os for newer Go versions ) func main() { data := []byte("This is some text.") err := os.WriteFile("my_file.txt", data, 0644) // 0644 sets permissions if err != nil { panic(err) // Handle errors appropriately - see next section } }
>高性能I/Oライブラリ(高度なユースケースの場合):
非常に高いパフォーマンス要件または特定のハードウェアの最適化については、I/O操作の低レベルの制御を提供するライブラリを探索することができますが、これらは一般的に特殊なシナリオでのみ必要です。 これらのライブラリには、多くの場合、より複雑な構成と使用法が含まれます。以上が言語を効率的に書き込むファイル:php file_put_contents()に相当する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。