この記事では、Golang でファイルを読み取る方法について説明します。これらのファイルを処理するには次のパッケージを使用します。
- os パッケージは、操作レベルの操作を実行するためのプラットフォームに依存しないインターフェイスを提供します。
- IOutil このパッケージは、内部実装についてあまり知らなくてもファイルを操作できる使いやすいユーティリティ関数を提供します。
- bufio パッケージはバッファリングされた IO を実装しており、入出力操作のパフォーマンスとスループットの向上に役立ちます。
-
log パッケージは、単純なログ記録パッケージを実装します。これをプログラム全体で使用します。プログラムではログパッケージの
Fatal()
関数を使用します。
ファイル全体の読み取り
ファイル全体を一度に簡単に読み取り、変数に保存できます。ただし、大きなファイルに対してこれを行うべきではないことに注意してください。 ioutil.ReadFile()
関数を使用してファイルを読み取り、ファイルの内容を変数に保存します。
まず、プログラムと同じディレクトリにファイルを保存しましょう。したがって、フォルダー構造は次のようになります。
___ | |_ _ _ _ ilovego.txt | |_ _ _ _ main.go
main.go
関数に次のように記述します:
package main import ( "fmt" "io/ioutil" "log" ) func main() { content, err := ioutil.ReadFile("ilovego.txt") if err != nil { log.Fatal(err) } fmt.Println(string(content)) }
ただし、まず ReadFile()
関数について説明します。 状況:
- 定義: メソッド宣言 func
ReadFile(filename string) ([]byte, error)
- 関数: 読み取りパスが関数パラメータ ファイルに渡され、ファイルの内容を返します。内部的に使用される
os.ReadFile(fileName)
メソッド - Returns: ファイルの内容とエラーをバイト配列で返します。呼び出しが成功すると、err == nil
内部 ReadFile 関数は次のように実装されます:
func ReadFile(filename string) ([]byte, error) { return os.ReadFile(filename) }
さて、プログラムに戻りましょう:
-
ioutil.ReadFile("readthisfile.txt")
byteArray とエラーを返します。 byteArray を「content」変数に保存し、エラーを「err」変数に保存します。 - 次に、if 条件を設定します。err 値が nil でない場合は、
log.Fatal()
関数を使用してエラー err を出力します。Fatal()
関数は、os.Exit(1)
を呼び出すPrint()
関数と同等であることに注意してください。 - 最後に、
fmt.Println()
関数を使用してファイルの内容を印刷します。content
変数はバイト配列であり、文字列に変換する必要があるため、単純に出力することはできません。string(content)
次に、新しい ilovego.txt
ファイルを作成し、次の内容を書き込みます:
I Love Golang, This is One of the Best Languages on the World!
最後に、上記のコードを実行すると、次の出力が表示されます:
$ go run main.go I Love Golang, This is One of the Best Languages on the World!
Press line読み取り
スキャナ スキャナは、改行で区切られたテキスト行で構成されるファイルなどのデータを読み取るための便利なインターフェイスを提供します。マーカーを介してデータを読み取ります。Split
関数はマーカーを定義します。デフォルトでは、この関数はデータを行に分割し、行の端を削除します。
package main import ( "fmt" // "io/ioutil" "bufio" "log" "os" ) func main() { // opening the file using Open function f, err := os.Open("ilovego.txt") if err != nil { log.Fatal(err) } defer f.Close() // create a scanner for the file scanner := bufio.NewScanner(f) // loop through the scanner until it return fasle for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal(err) } }
-
os.Open()
パラメータで渡されたファイルを開きます。ファイルを開くときにエラーが発生した場合は、同じエラーが返されます。それ以外の場合、エラーは nil になります。 - 次に、スキャナを使用してファイルを読み取り、ファイルの内容の終わりまで 1 行ずつスキャンします。
- 最後に、ファイルを閉じます。
プログラムを実行すると、結果は次のようになります:
単語ごとに読み取ります
ファイルを単語ごとに読み取る:
package main import ( "bufio" "fmt" "os" ) func main() { f, err := os.Open("ilovego.txt") if err != nil { fmt.Println(err) } defer f.Close() scanner := bufio.NewScanner(f) scanner.Split(bufio.ScanWords) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println(err) } }
コードを実行する:
$ go run main.go I Love Golang, This is One of the Best Languages on the World!
ファイルをチャンクで読み取る
ファイル全体を読み取ることもできます。 at Once これは簡単な方法のように思えますが、メモリ管理の観点からプログラムを最適化する必要がある場合があります。 Golang は、ファイル全体を読み取るのではなく、あるいは 1 行ずつ読み取るのではなく、ファイルを分割して読み取る方法を提供します。行のサイズが大きすぎると、行ごとの読み取りも非効率になる可能性があるためです。
package main import ( "bufio" "fmt" "io" "log" "os" ) func main() { f, err := os.Open("ilovego.txt") if err != nil { log.Fatal(err) } defer f.Close() reader := bufio.NewReader(f) buf := make([]byte, 16) for { // reading a file upto buffer n, err := reader.Read(buf) if err != nil { if err != io.EOF { log.Fatal(err) } break } fmt.Print(string(buf[0:n])) } fmt.Println() }
バイナリ読み取り
hex
パッケージは 16 進数のエンコードとデコードを実装します。
package main import ( "bufio" "encoding/hex" "fmt" "io" "log" "os" ) func main() { f, err := os.Open("sid.jpg") if err != nil { log.Fatal(err) } defer f.Close() reader := bufio.NewReader(f) buf := make([]byte, 256) for { _, err := reader.Read(buf) if err != nil { if err != io.EOF { fmt.Println(err) } break } fmt.Printf("%s", hex.Dump(buf)) } }
总结
本文介绍了 Go 语言读取文件的几种方式,ioutil.ReadFile
函数将整个文件读成一个字符串。这个函数很方便,但不应该用于非常大的文件。希望能对你有所帮助!
推荐学习:Golang教程
以上がGo 言語でファイルを読み取るにはどうすればよいですか?さまざまな手法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

gohandlesinterfacesandtypeassertionseffectivivivivivity、強化された柔軟性と耐毒性を強化します

言語エラー処理は、エラーとエラーを介してより柔軟になり、読みやすくなります。 1.エラーは、エラーが指定されたエラーと同じであり、エラーチェーンの処理に適しているかどうかを確認するために使用されます。 2.エラー。エラータイプを確認するだけでなく、エラーを特定のタイプに変換することもできます。これは、エラー情報を抽出するのに便利です。これらの関数を使用すると、エラー処理ロジックを簡素化できますが、エラーチェーンの正しい配信に注意を払い、コードの複雑さを防ぐために過度の依存性を回避できます。

tomakegogoapplicationsRunfasterAndMore -efficient、useprofilingtools、leverageconconcurrency、andmanagememoryefcectively.1)useprofforcpuandmemoryprofilingtoidentififybottlenecks.2)

go'sfutureisbrightwithtrendslikeRikeRovedTooling、generics、cloud-nativeadoption、performulenhancements、andwebassemblyintegration、butchallengesincludemaintainingsimplicitandimplovingeror handling。

GoroutinesAreSareSareSareSormethodSthaturncurlyntingo、Enableing and LightweightConcurrency.1)theyRuntimeSimeSingMultiplexing、SountyStorunonFeweroSthReads.2)ゴルチンズを失ったことを許可します

initistoistoInitializevariables、setupconutupurations、orforformndexedarysetupbe foreThemainfunctionexecutes.useinitby:1)inginginyourcodeTorunautorunaintalunain、2)KeepingItshortandpocusedonsimpletasks、3)ConsididiriveSusinginsingingingingingingingingingingingingingingingingingingingingingingsingpltassksを使用すると、

go interfacesaremethodsignaturesetsetsattypesmustimplement、unableingpolymorphism withintinheritance forcleaner、modularcode.theyareimplictilistifisisfiestified、houseforfflexibleapisanddeaupling、busrecarefulusoavoidoidoimoidimeerrororsypertety。

Goで回復()関数を使用して、パニックから回復します。特定の方法は次のとおりです。1)回復()を使用して、延期関数でパニックをキャプチャして、プログラムのクラッシュを避けます。 2)デバッグの詳細なエラー情報を記録します。 3)特定の状況に基づいてプログラムの実行を再開するかどうかを決定します。 4)パフォーマンスに影響を及ぼさないように注意して使用します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ホットトピック









