<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國際加速解決方案。 廣告
                ~~~ package main import ( "os" "fmt" "io" "bufio" "io/ioutil" "time" ) func ReadFile1(filename string) { // os.Create() 和 os.Open() 也是調用了os.OpenFile() /* *第二個參數: 文件打開模式 syscall.O_RDONLY // 只讀模式打開文件 syscall.O_WRONLY // 只寫模式打開文件 syscall.O_RDWR // 讀寫模式打開文件 syscall.O_APPEND // 寫操作時將數據附加到文件尾部 syscall.O_CREAT // 如果不存在將創建一個新文件 syscall.O_EXCL // 和O_CREATE配合使用,文件必須不存在 syscall.O_SYNC // 打開文件用于同步I/O syscall.O_TRUNC // 如果可能,打開時清空文件 */ /*第三個參數: 權限控制 -rw-r--r-- - | rw- | r-- | r-- 1 | 2 | 3 | 4 1 文件類型 2 擁有者權限 3 群組用戶權限 4 其它用戶權限 r 可讀 4 w 可寫 2 x 可執行 1 - 無權限 0 */ //os.O_WRONLY 只寫 O_RDWR 讀寫 (認錯單詞, 被坑了) file, err := os.OpenFile(filename, os.O_RDONLY, 0777) if err != nil { fmt.Println(err) } defer file.Close() //var b[]byte 長度為0 var b [64]byte var content []byte /* fmt.Println(reflect.TypeOf(b)) fmt.Println(reflect.TypeOf(b[:])) */ for { n, err := file.Read(b[:]) //讀到沒有內容時,報錯 if err == io.EOF { break } if err != nil { fmt.Println(err) } //content = append(content, b[:]...) //最后可能讀不夠64字節 content = append(content, b[:n]...) } fmt.Println(string(content)) } func ReadFile2(filename string) { //帶緩沖讀取文件 file, err := os.OpenFile(filename, os.O_RDONLY, 0777) if err != nil { fmt.Println(err) } //*file 實現了 Reader接口 reader := bufio.NewReader(file) var b [64]byte var content []byte for { //Read有很多讀取數據的方法 //reader.ReadString('\n') 讀取一行數據 n, err := reader.Read(b[:]) if err == io.EOF { break } if err != nil { fmt.Println(err) } content = append(content, b[:n]...) } fmt.Println(string(content)) } func ReadFile3(filename string) { //一次性讀取整個文件 content, err := ioutil.ReadFile(filename) if err != nil { fmt.Println(err) } fmt.Println(string(content)) } func WriteFile1(filename string) { file, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0777) if err != nil { fmt.Println(err) } var b []byte b = []byte("\nHello World\nHello World2") _, err = file.Write(b) if err != nil { fmt.Println(err) } } func WriteFile2(filename string) { file, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0777) if err != nil { fmt.Println(err) } var b []byte b = []byte("\nHello World\nHello World23") write := bufio.NewWriter(file) n, err := write.Write(b) //Flush方法將緩沖中的數據寫入下層的io.Writer接口 write.Flush() fmt.Println(n) if err != nil { fmt.Println(err) } } func WriteFile3(filename string) { var b []byte b = []byte("Hello World\nHello World2") //寫一個全新的文件 //os.O_WRONLY|os.O_CREATE|os.O_TRUNC err := ioutil.WriteFile(filename, b, 0777) if err != nil { fmt.Println(err) } } /* 類型*File 標準輸入 Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") 標準輸出 Stdout = NemwFile(uintptr(syscall.Stdout), "/dev/stdout") 標準錯誤 Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr") */ func ReadAndWrite(filename string) { //_, err := io.WriteString(os.Stdout, "Hello World") //if err != nil { // fmt.Println(err) //} /* Pipe創建一個同步的內存中的管道。它可以用于連接期望io.Reader的代碼和期望io.Writer的代碼。一端的讀取對應另一端的寫入,直接在兩端拷貝數據,沒有內部緩沖。可以安全的并行調用Read和Write或者Read/Write與Close方法。Close方法會在最后一次阻塞中的I/O操作結束后完成。并行調用Read或并行調用Write也是安全的:每一個獨立的調用會依次進行。 */ r, w := io.Pipe() go func() { i := 0 for { w.Write([]byte(fmt.Sprint("Number", i))) i++ } }() go func() { var d [8]byte for { n, err := r.Read(d[:]) if err != nil { fmt.Println(err) } fmt.Println(string(d[:n])) } }() time.Sleep(time.Second * 10) } func main() { var filename = "D:/uploads/file.txt" ReadAndWrite(filename) //TODO : ReadFile //ReadFile1(filename) //ReadFile2(filename) //帶緩沖讀取文件 //ReadFile3(filename) //一次性讀取整個文件 //TODO : WriteFile //WriteFile1(filename) //WriteFile2(filename) //WriteFile3(filename) } ~~~ > ### 例子2 ~~~ package demo13 import ( "flag" "fmt" ) var name string var age int func init() { //flag包獲取命令行參數 flag.StringVar(&name, "n", "Go", "A Name") flag.IntVar(&age, "a", 18, "Age Number") } func Demo13() { /* 類型*File 標準輸入 Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") 標準輸出 Stdout = NemwFile(uintptr(syscall.Stdout), "/dev/stdout") 標準錯誤 Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr") */ /* ----- number := 1 fmt.Printf("1--fmt.Printf:%d\n\r", number) data1 := fmt.Sprintf("2--fmt.Sprintf:%d", number) fmt.Println(data1) //var data2 interface{} interface類型在初始化,是沒有分配內存空間給data2變量,相當于nil也就是指一個空指針 var data2 string fmt.Scan(&data2) fmt.Println("3--Scan:", data2) fmt.Scanf("%s", &data2) fmt.Println("4--Scanf:", data2) */ //終端其實是一個文件 //以文件方式操作終端 //不同的運行環境中 console 的 stdin 實現特性不同導致的 /* var b [16]byte os.Stdin.Read(b[:]) fmt.Println(string(b[:])) */ //從字符串里獲取數據 fmt.scanf //從文件里獲取數據 fmt.Fscanf /* var a int var b string fmt.Fscanf(os.Stdin, "%d%s", &a, &b) fmt.Println(a, b) */ //文件本身讀寫差 //bufio 帶緩沖區文件讀寫 (大文件) /* inputReader := bufio.NewReader(os.Stdin) input, err := inputReader.ReadString('\n') if err == nil{ fmt.Println(input) } */ //獲取命令行參數 //GoStudy.exe a b c d /* for _, v := range os.Args { fmt.Println(v) } */ //flag包獲取命令行參數 fmt.Println(name) fmt.Println(age) //github.com/urfave/cli } ~~~ > ### 1 ~~~ package demo14 import ( "os" "fmt" "gitee.com/winnie_gss/GoStudy/demo1" "io" "bufio" "io/ioutil" "compress/gzip" ) func Exam1() { file, err := os.Open("D:/demo13.go") defer file.Close() demo1.SimplePanic(err) var b [32]byte var content []byte for { n, err := file.Read(b[:]) //讀到沒有內容時,報錯 if err == io.EOF { break } demo1.SimplePanic(err) //content = append(content, b[:]...) //最后可能出現沒讀夠 content = append(content, b[:n]...) } fmt.Println(string(content)) } func Exam2() { file, err := os.Open("D:/demo13.go") demo1.SimplePanic(err) reader := bufio.NewReader(file) for { line, err := reader.ReadString('\n') if err == io.EOF { break } demo1.SimplePanic(err) fmt.Println(line) } } func Exam3() { content, err := ioutil.ReadFile("D:/demo13.go") demo1.SimplePanic(err) fmt.Println(string(content)) } func Exam4() { file, err := os.Open("D:/demo13.zip") demo1.SimplePanic(err) defer file.Close() reader, err := gzip.NewReader(file) demo1.SimplePanic(err) fmt.Println(reader) //var b [32]byte //var content []byte // //for { // n, err := reader.Read(b[:]) // if err == io.EOF { // break // } // demo1.SimplePanic(err) // content = append(content, b[:n]...) //} //fmt.Println(string(content)) } func Exam5() { //第二個參數: 文件打開模式 /* syscall.O_RDONLY // 只讀模式打開文件 syscall.O_WRONLY // 只寫模式打開文件 syscall.O_RDWR // 讀寫模式打開文件 syscall.O_APPEND // 寫操作時將數據附加到文件尾部 syscall.O_CREAT // 如果不存在將創建一個新文件 syscall.O_EXCL // 和O_CREATE配合使用,文件必須不存在 syscall.O_SYNC // 打開文件用于同步I/O syscall.O_TRUNC // 如果可能,打開時清空文件 */ //第三個參數: 權限控制 /* -rw-r--r-- - | rw- | r-- | r-- 1 | 2 | 3 | 4 1 文件類型 2 擁有者權限 3 群組用戶權限 4 其它用戶權限 r 可讀 4 w 可寫 2 x 可執行 1 - 無權限 0 */ file, err := os.OpenFile("D:/demo14.go", os.O_TRUNC|os.O_WRONLY, 0666) demo1.SimplePanic(err) str := "Hello World" file.Write([]byte(str)) } /* return x -> 返回值=x , ret指令 */ func Exam6() (y int) { x := 5 return x } func Exam7() { file1, err := os.Open("D:/123.txt") demo1.SimplePanic(err) file2, err := os.OpenFile("D:/321.txt", os.O_CREATE|os.O_WRONLY, 0666) demo1.SimplePanic(err) } func Demo14() { //文件讀寫 //Exam1() //bufio讀取一行數據 //Exam2() //ioutil讀取整個文件 //Exam3() //讀取壓縮文件 ???? //Exam4() //文件寫入 //Exam5() //fmt.Println(Exam6()) //TODO : io.copy 文件拷貝 Exam7() } ~~~
                  <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>

                              哎呀哎呀视频在线观看