diff --git a/lib/core/file/csv.go b/lib/core/file/csv.go index f8bcce90..1473a79b 100644 --- a/lib/core/file/csv.go +++ b/lib/core/file/csv.go @@ -45,10 +45,14 @@ func WriterCSVFile(data [][]string, filePath string) error { // 读取CSV文件,转换map数据 func ReadCSVFile(filePath string) []map[string]string { + // 创建 map 存储 CSV 数据 + arr := make([]map[string]string, 0) + // 打开 CSV 文件 file, err := os.Open(filePath) if err != nil { log.Fatal("无法打开 CSV 文件:", err) + return arr } defer file.Close() @@ -59,11 +63,9 @@ func ReadCSVFile(filePath string) []map[string]string { header, err := reader.Read() if err != nil { log.Fatal("无法读取 CSV 头部行:", err) + return arr } - // 创建 map 存储 CSV 数据 - arr := make([]map[string]string, 0) - // 遍历 CSV 数据行 for { // 读取一行数据 diff --git a/lib/core/file/txt.go b/lib/core/file/txt.go new file mode 100644 index 00000000..1690e3e0 --- /dev/null +++ b/lib/core/file/txt.go @@ -0,0 +1,79 @@ +package file + +import ( + "bufio" + "fmt" + "os" + "path/filepath" + "strings" + + "ems.agt/lib/log" +) + +// 写入Txt文件用,号分割 需要转换数据 +// 例如: +// data := [][]string{} +// data = append(data, []string{"姓名", "年龄", "城市"}) +// data = append(data, []string{"1", "2", "3"}) +// err := file.WriterCSVFile(data, filePath) +func WriterTxtFile(data [][]string, filePath string) error { + // 获取文件所在的目录路径 + dirPath := filepath.Dir(filePath) + + // 确保文件夹路径存在 + err := os.MkdirAll(dirPath, os.ModePerm) + if err != nil { + log.Errorf("创建文件夹失败 CreateFile %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, ",") + fmt.Fprintln(writer, line) + } + + // 将缓冲区中的数据刷新到文件中 + err = writer.Flush() + if err != nil { + log.Errorf("刷新缓冲区时发生错误:", err) + return err + } + return nil +} + +// 读取Txt文件,用,号分割 转换数组数据 +func ReadTxtFile(filePath string) [][]string { + // 创建 map 存储 CSV 数据 + arr := make([][]string, 0) + + // 打开文本文件 + file, err := os.Open(filePath) + if err != nil { + log.Fatal("无法打开文件:", err) + return arr + } + defer file.Close() + + // 创建一个 Scanner 对象,用于逐行读取文件内容 + scanner := bufio.NewScanner(file) + if scanner.Err() != nil { + log.Fatal("读取文件时出错:", scanner.Err()) + return arr + } + + for scanner.Scan() { + line := scanner.Text() + fields := strings.Split(line, ",") + arr = append(arr, fields) + } + + return arr +}