ファイル読み書き/コマンドラインパラメータ
3257 ワード
os.Fileはすべてのファイルに関する操作をカプセル化し、前に述べたos.Stdin,os.Stdout,os.スティーブンはみんなosだFilea.ファイルを開く読み取り操作:os.Open(name string)(File,error)b.ファイルを閉じる:File.Close()
開けてから使わないで必ず閉めてください!リソースの漏洩を引き起こす可能性があります.linuxを例にとると、ファイルを開くとカーネルにファイルハンドルが作成され、関係なく常に存在します.そして、数量には制限があります!制限を超えて開くとエラーになります!
ファイルが小さい場合は、ファイル全体を読み込むことができます.
ファイル書き込み:os.OpenFile(「output.dat」,os.O_WRONLY|os.O_CREATE,0666)2番目のパラメータ:ファイルオープンモード: os.O_WRONLY: と書くだけ os.O_CREATE:ファイル作成 os.O_RDONLY:読取り専用 os.O_RDWR:読み書き os.O_TRUNC:3番目のパラメータをクリア:権限制御:r——>004 w——>002 x——>001 flushでないとメモリにしか书けないのでディスクには书けません!!!
os.Argsはstringのスライスであり、すべてのコマンドラインパラメータflagパッケージの使用を格納し、コマンドラインパラメータ:flagを解析するために使用される.BoolVar(&test, "b", false, "print on newline")flag.StringVar(&str, "s", "", "print on newline")flag.IntVar(&count,“c”,1001,“print on newline”)Jsonデータプロトコルインポートパッケージ:Import"encoding/json" シーケンス化:json.Marshal(data interface{}) 逆シーケンス化:json.UnMarshal(data []byte, v interface{})
出力:fffff入力:66666
Process finished with exit code 0は、ファイルから1行の文字列を読み出し、英語、数字、スペース、その他の文字の数を統計します(注意:この例reader.ReadString(')以降は区切られているので、ファイルの末尾が正確に統計されます):
転載先:https://blog.51cto.com/5660061/2347853
開けてから使わないで必ず閉めてください!リソースの漏洩を引き起こす可能性があります.linuxを例にとると、ファイルを開くとカーネルにファイルハンドルが作成され、関係なく常に存在します.そして、数量には制限があります!制限を超えて開くとエラーになります!
ファイルが小さい場合は、ファイル全体を読み込むことができます.
ファイル書き込み:os.OpenFile(「output.dat」,os.O_WRONLY|os.O_CREATE,0666)2番目のパラメータ:ファイルオープンモード:
os.Argsはstringのスライスであり、すべてのコマンドラインパラメータflagパッケージの使用を格納し、コマンドラインパラメータ:flagを解析するために使用される.BoolVar(&test, "b", false, "print on newline")flag.StringVar(&str, "s", "", "print on newline")flag.IntVar(&count,“c”,1001,“print on newline”)Jsonデータプロトコル
package main
import (
"bufio"
"os"
"fmt"
)
func main() {
file, err := os.Open("C:/test.log")
if err != nil {
fmt.Println(err)
return
}
//
defer file.Close()
reader := bufio.NewReader(file)
str, _, err := reader.ReadLine()
fmt.Println(" :", string(str))
ff, _, err := reader.ReadLine()
if err != nil {
fmt.Println(err)
return
}
fmt.Println(" :", string(ff))
}
出力:fffff入力:66666
Process finished with exit code 0は、ファイルから1行の文字列を読み出し、英語、数字、スペース、その他の文字の数を統計します(注意:この例reader.ReadString(')以降は区切られているので、ファイルの末尾が正確に統計されます):
package main
import (
"os"
"fmt"
"bufio"
"io"
)
//
type CharCount struct {
ChCount int
NumCount int
SpaceCount int
OtherCOunt int
}
func main() {
file, err := os.Open("C:/test.log")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
var count CharCount
reader := bufio.NewReader(file)
for {
str, err := reader.ReadString('
')
// , EOF
if err == io.EOF {
break
}
if err != nil {
fmt.Println(err)
break
}
// ( ),
runeArr := []rune(str)
for _, v := range runeArr {
switch {
case v >= 'a' && v <= 'z':
fallthrough // case
case v >= 'A' && v <= 'Z':
count.ChCount++
case v == ' ' || v == '\t':
count.SpaceCount++
case v >= '0' && v <= '9':
count.NumCount++
default:
count.OtherCOunt++
}
}
}
fmt.Println(" :", count.ChCount)
fmt.Println(" :", count.NumCount)
fmt.Println(" :", count.SpaceCount)
fmt.Println(" :", count.OtherCOunt)
}
転載先:https://blog.51cto.com/5660061/2347853