Go基础_1_65 ioutil

Tutorial: Go初级 Category: Go Published: 2026-04-07 13:58:26 Views: 21 Likes: 0 Comments: 0
package main

import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    /*
        ioutil包:
            ReadFile()
            WriteFile()
            ReadDir()
            ..
    */

    // 1.读取文件中的所有的数据
    // fileName := "D:\\Go\\web2\\aa.txt"
    // data, err := ioutil.ReadFile(fileName)
    // fmt.Println(err)
    // fmt.Println(data) // [97 97 13 ...
    // fmt.Println(string(data))

    // 2.写入数据
    // fileName := "D:\\Go\\web2\\bb.txt"
    // s1 := "床前明月光,地上鞋三双"
    // err := ioutil.WriteFile(fileName, []byte(s1), os.ModePerm) // 重写覆盖所有
    // fmt.Println(err)

    // 3.ReadAll()
    // s2 := "王二狗和李小花是两个好朋友,Ruby就是我,也是他们的朋友"
    // r1 := strings.NewReader(s2)
    // data, err := ioutil.ReadAll(r1)
    // fmt.Println(err)
    // fmt.Println(data) // [231 142 139
    // fmt.Println(string(data))

    // 4.ReadDir(),读取一个目录下的子内容:子文件和子目录,但是只能读取一层
    // dirName := "D:\\Go\\web2"
    // fileInfos, err := ioutil.ReadDir(dirName)
    // if err != nil {
    //     fmt.Println(err)
    //     return
    // }
    // fmt.Println(len(fileInfos))
    // for i := 0; i < len(fileInfos); i++ {
    //     fmt.Printf("%#v\n", fileInfos[i])
    //     /*
    //         &os.fileStat{
    //             name:"aa.txt",
    //             FileAttributes:0x20,
    //             CreationTime:syscall.Filetime{
    //                 LowDateTime:0x9da022ec,
    //                 HighDateTime:0x1d7e81b
    //             },
    //             LastAccessTime:syscall.Filetime{
    //                 LowDateTime:0x9da022ec,
    //                 HighDateTime:0x1d7e81b
    //             },
    //             LastWriteTime:syscall.Filetime{
    //                 LowDateTime:0xe680f126,
    //                 HighDateTime:0x1d7ec06
    //             },
    //             FileSizeHigh:0x0,
    //             FileSizeLow:0x1a,
    //             Reserved0:0x0,
    //             filetype:0x0,
    //             Mutex:sync.Mutex{
    //                 state:0,
    //                 sema:0x0
    //             },
    //             path:"D:\\Go\\web2",
    //             vol:0x0,
    //             idxhi:0x0,
    //             idxlo:0x0,
    //             appendNameToPath:true
    //         }
    //     */
    //     fmt.Printf("第 %d 个:名称:%s,是否是目录:%t\n", i, fileInfos[i].Name(), fileInfos[i].IsDir())
    //     /*
    //         6
    //         第 0 个:名称:aa.txt,是否是目录:false
    //         第 1 个:名称:bb.txt,是否是目录:false
    //         第 2 个:名称:demo.go,是否是目录:false
    //         第 3 个:名称:dir1,是否是目录:true
    //         第 4 个:名称:test.png,是否是目录:false
    //         第 5 个:名称:user.db,是否是目录:false
    //     */
    // }

    // 5.临时目录和临时文件
    dir, err := ioutil.TempDir("D:\\Go\\web2\\dir1", "Test") // 创建临时目录 Test
    if err != nil {
        fmt.Println(err)
        return
    }
    defer os.Remove(dir)
    fmt.Println(dir) // D:\Go\web2\dir1\Test1160668805

    file, err := ioutil.TempFile(dir, "text.txt") // 创建临时文件
    if err != nil {
        fmt.Println(err)
        return
    }
    defer os.Remove(file.Name())
    fmt.Println(file.Name())

}