<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 打開與關閉文件 `OS.Open()` 函數可以打印一個文件。返回一個 `*os.File` 和 `err` ```go func main() { // 打開文件 file, err := os.Open("test.txt") if err != nil { fmt.Println(err) } // 關閉文件 file.Close() } ``` # 讀文件 ## 按照字節讀取內容 ```go func readByte(file *os.File) { data := make([]byte, 15) file.Read(data) fmt.Println(string(data)) } func main() { file, err := os.Open("test.txt") if err != nil { fmt.Println(err) } else { readByte(file) file.Close() } } ``` ## 按照行讀取內容 **方式一** 弊端:讀到最后一行是沒有換行符號,str和err都是有值的。 ```go func readLines(file *os.File) { reader := bufio.NewReader(file) str, err := reader.ReadString('\n') if err != nil { fmt.Printf("err: %v\n", err) } else { fmt.Print(str) } } func main() { file, err := os.Open("test.txt") if err != nil { fmt.Println(err) } else { readLines(file) file.Close() } } ``` **方式二** 【推薦】 ```go func readLines(file *os.File) { reader := bufio.NewReader(file) b, _, err := reader.ReadLine() if err != nil { fmt.Printf("err: %v\n", err) } else { fmt.Println(string(b)) } } func main() { file, err := os.Open("test.txt") if err != nil { fmt.Println(err) } else { readLines(file) file.Close() } } ``` ## 讀取整個文件 **方式一** 文件大的話,不建議使用。讀取文件會先將內容加載到內存中。 ```go func readFile(filename string) { b, err := ioutil.ReadFile(filename) if err != nil { fmt.Printf("err: %v\n", err) } else { fmt.Println(string(b)) } } func main() { readFile("test.txt") file.Close() } ``` **方式二** 【推薦】 ```go func readLines(file *os.File) { reader := bufio.NewReader(file) for true { b, _, err := reader.ReadLine() if err != nil { // 判斷是否已經讀取完整個文件內容 if err == io.EOF { break } fmt.Printf("err: %v\n", err) } else { fmt.Println(string(b)) } } } func main() { file, err := os.Open("test.txt") if err != nil { fmt.Println(err) } else { readLines(file) file.Close() } } ``` # 寫文件 OpenFile是通用的公開調用;大多數用戶會使用“打開”或“創建”。它打開帶有指定標志(O_RDONLY等)的命名文件。如果文件不存在,并且傳遞了O_CREATE標志,則使用模式perm(在umask之前)創建該文件。如果成功,返回的File上的方法可以用于I/O。如果有一個錯誤,它的類型將是*PathError。 | 文件模式 | 含義 | | :-: | :-: | | os.O_RDONLY | 以只讀方式打開文件 | | os.O_WRONLY | 以只寫方法打開文件 | | os.O_RDWR | 以讀寫方式打開文件 | | os.O_APPEND | 以追加方式打開文件 | | os.O_CREATE | 如果不存在,創建一個新文件 | | os.O_EXCL | 與O_CREATE一起使用,文件必須不存在 | | os.O_SYNC | 同步方式打開,即不使用緩存,直接寫入硬盤 | | os.O_TRUNC | 打開時截斷常規可寫文件 | 詳細請看官網文檔:https://pkg.go.dev/os#pkg-constants ## 直接寫入文件 ```go func writeByteOrString(file *os.File) { s := "jiaxzeng\n" // 方式一 // file.Write([]byte(s)) // 方式二 file.WriteString(s) } func main() { file, err := os.OpenFile("notes.txt", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0644) if err != nil { fmt.Printf("err: %v\n", err) } else { writeByteOrString(file) } } ``` ## 先寫緩存再落盤 ```go func writeByBufio(file *os.File) { writer := bufio.NewWriter(file) writer.WriteString("jiaxzeng\n") writer.Flush() } func main() { file, err := os.OpenFile("notes.txt", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0644) if err != nil { fmt.Printf("err: %v\n", err) } else { writeByBufio(file) } } ``` ## 創建或清空再寫入文件 創建或清空再寫入文件. 當文件存在, 清空文件再寫入. 不修改文件的權限; 當文件不存在, 創建指定權限文件再寫入 ```go func main() { s := "jiaxzeng\n" ioutil.WriteFile("notes.txt", []byte(s), 0644) } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看