1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| package main
import ( "fmt" "io" "os" "path/filepath" )
func main() { dir := "C:/Users/Pip/Desktop/Go初识/"
// 改变路径 err := os.Chdir(dir) if err != nil { fmt.Println("打开文件失败") os.Exit(1) }
// 获取文件列表 fileList, err := filepath.Glob("*") if err != nil { fmt.Println("获取失败") os.Exit(1) } fmt.Println(fileList)
// 遍历文件列表修改后缀并新建文件 for _, name := range fileList { // 跳过.md文件 if string(name[len(name) - 3:]) == ".md"{ continue } newName := name[:len(name) - 3] + ".md"
// 打开.go文件 oldfile, err := os.OpenFile(name, os.O_RDWR, 0666) if err != nil { fmt.Printf("打开文件%s失败\n", newName) os.Exit(1) } fmt.Println("Open file:", name, "success")
// 打开.md文件不存在则新建 newfile, err := os.OpenFile(newName, os.O_CREATE | os.O_RDWR, 0666) if err != nil { fmt.Printf("Open file: %s failed\n", newName) os.Exit(1) } fmt.Println("Open file:", newName, "success")
// 修改格式写入另一个文件 _, err = newfile.WriteString("# " + name[:len(name)-3] + "\n```\n") if err != nil{ fmt.Println("Write ", newName, "failed") os.Exit(1) } var fileContent = make([] byte, 1024) for ;;{ n, err := oldfile.Read(fileContent) if err != nil && err != io.EOF{ fmt.Println("Write to", newName, "failed") os.Exit(1) }else if n == 0 { break } newfile.WriteString(string(fileContent)[:n]) } _, err = newfile.WriteString("\n```") if err != nil { fmt.Println("Write to", newName, "failed") os.Exit(1) } fmt.Println("Write to", string(newName), "success\n")
//newfile.Sync() // 立即同步,即将内容写入数据 newfile.Close() // 关闭文件或者程序终止内容才会写入文件 } }
|