ファイル読み書き/コマンドラインパラメータ

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{})
  • 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