<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 操作文件夾和文件 Go提供了os和 ioutils包來對文件和文件夾進行操作,值得高興的是,它們是跨平臺的,無需對操作系統做過多考慮。 ### 實踐 1. 建立 dirs.go : ``` package filedirs import ( "errors" "io" "os" ) // 操縱文件和目錄 func Operate() error { // 文件權限0755類似于你在命令行中使用的chown, // 這將創建一個目錄 /tmp/example, // 你也可以使用絕對路徑而不是相對路徑 if err := os.Mkdir("example_dir", os.FileMode(0755)); err != nil { return err } // 跳轉到 /tmp 目錄 if err := os.Chdir("example_dir"); err != nil { return err } // f是一個通用的文件對象 它還實現了多個接口,并且如果在打開時設置了正確的方式,則可以用作讀取器或寫入器 f, err := os.Create("test.txt") if err != nil { return err } // 向文件寫入長度已知的數據 并確認寫入成功 value := []byte("hello\n") count, err := f.Write(value) if err != nil { return err } if count != len(value) { return errors.New("incorrect length returned from write") } if err := f.Close(); err != nil { return err } // 讀取文件 f, err = os.Open("test.txt") if err != nil { return err } io.Copy(os.Stdout, f) if err := f.Close(); err != nil { return err } // 跳轉到 /tmp 文件夾 if err := os.Chdir(".."); err != nil { return err } // 刪除建立的文件夾 // os.RemoveAll如果傳遞了錯誤的文件夾路徑會返回錯誤 if err := os.RemoveAll("example_dir"); err != nil { return err } return nil } ``` 2. 建立bytes.go: ``` package filedirs import ( "bytes" "io" "os" "strings" ) // 讀取并轉換為大寫后復制內容到目標文件 func Capitalizer(f1 *os.File, f2 *os.File) error { if _, err := f1.Seek(0, 0); err != nil { return err } var tmp = new(bytes.Buffer) if _, err := io.Copy(tmp, f1); err != nil { return err } s := strings.ToUpper(tmp.String()) if _, err := io.Copy(f2, strings.NewReader(s)); err != nil { return err } return nil } // 建立兩個文件 將其中一個的內容轉換為大寫復制給另一個 func CapitalizerExample() error { f1, err := os.Create("file1.txt") if err != nil { return err } if _, err := f1.Write([]byte(` this file contains a number of words and new lines`)); err != nil { return err } f2, err := os.Create("file2.txt") if err != nil { return err } if err := Capitalizer(f1, f2); err != nil { return err } if err := os.Remove("file1.txt"); err != nil { return err } if err := os.Remove("file2.txt"); err != nil { return err } return nil } ``` 3. 建立main.go: ``` package main import "github.com/agtorre/go-cookbook/chapter1/filedirs" func main() { if err := filedirs.Operate(); err != nil { panic(err) } if err := filedirs.CapitalizerExample(); err != nil { panic(err) } } ``` 4. 運行main.go,這會輸出: ``` hello ``` 示例在運行中會分別建立file1.txt和file2.txt然后刪掉,file1.txt中包含: ``` this file contains a number of words and new lines ``` file2.txt中包含: ``` THIS FILE CONTAINS A NUMBER OF WORDS AND NEW LINES ``` ### 說明 如果你熟悉Unix下的文件系統,那么Go的os包一定看起來很親切。你可以使用該包進行基本的文件操作——例如查看文件狀態,修改文件權限,操作文件及文件夾等。在示例中我們對目錄和文件進行了操作,并在操作結束后對其進行刪除。 操作文件對象與操作內存中的流數據非常相似。os.File還提供了許多便利的函數,例如Chown,Stat和Truncate。 想要熟悉os.File的各種函數最簡單方法就是使用它們。在所有的示例中,我們都會小心的清理程序中額外產生的臨時文件,在日常工作中這也是個很好的習慣。 當你讀取文件并將其存儲在File結構之后,就可以輕松地將其傳遞給前面討論的多個 I/O 接口。在之前示例中,我們看到的對緩沖區和內存數據的操作都可以直接替換為文件對象。因此,對于諸如將日志寫入stderr以及對單個寫入調用同時將其寫入文件之類的操作會很有用。 * * * * 學識淺薄,錯誤在所難免。歡迎在群中就本書提出修改意見,以饗后來者,長風拜謝。 Golang中國(211938256) beego實戰(258969317) Go實踐(386056972)
                  <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>

                              哎呀哎呀视频在线观看