package file import ( "bufio" "fmt" "os" "path/filepath" "strings" "be.ems/src/framework/logger" ) // WriterFileTXT 写入txt文件 sep 分割符号 需要转换数据 // // 例如: // data := [][]string{} // data = append(data, []string{"姓名", "年龄", "城市"}) // data = append(data, []string{"1", "2", "3"}) // err := file.WriterFileTXT(data, filePath) func WriterFileTXT(data [][]string, sep string, filePath string) error { // 获取文件所在的目录路径 dirPath := filepath.Dir(filePath) // 确保文件夹路径存在 err := os.MkdirAll(dirPath, os.ModePerm) if err != nil { logger.Errorf("CreateFile MkdirAll %v", err) } // 创建或打开文件 file, err := os.Create(filePath) if err != nil { return err } defer file.Close() // 创建一个 Writer 对象,用于将数据写入文件 writer := bufio.NewWriter(file) for _, row := range data { line := strings.Join(row, sep) fmt.Fprintln(writer, line) } // 将缓冲区中的数据刷新到文件中 err = writer.Flush() if err != nil { logger.Errorf("CreateFile Flush %v", err) return err } return nil } // ReadFileTXT 读取Txt文件,sep 分割符号 转换数组数据 func ReadFileTXT(sep string, filePath string) [][]string { // 创建 map 存储数据 arr := make([][]string, 0) // 打开文本文件 file, err := os.Open(filePath) if err != nil { logger.Errorf("OpenFile Open %v", err) return arr } defer file.Close() // 创建一个 Scanner 对象,用于逐行读取文件内容 scanner := bufio.NewScanner(file) if scanner.Err() != nil { logger.Errorf("OpenFile NewScanner %v", scanner.Err()) return arr } for scanner.Scan() { line := scanner.Text() fields := strings.Split(line, sep) arr = append(arr, fields) } return arr }