109 lines
2.2 KiB
Go
109 lines
2.2 KiB
Go
package file
|
|
|
|
import (
|
|
"bufio"
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"nms_nbi/src/framework/logger"
|
|
)
|
|
|
|
// WriterFileJSON 写入JSON文件
|
|
func WriterFileJSON(data any, 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()
|
|
|
|
// 创建 JSON 编码器
|
|
encoder := json.NewEncoder(file)
|
|
|
|
// 将数据编码并写入文件
|
|
err = encoder.Encode(data)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// WriterFileJSONLine 写入JSON文件用 一行一个JSON
|
|
func WriterFileJSONLine(data []any, 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 {
|
|
jsonData, err := json.Marshal(row)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 写入 JSON 字符串到文件,并换行
|
|
fmt.Fprintln(writer, string(jsonData))
|
|
}
|
|
|
|
// 将缓冲区中的数据刷新到文件中
|
|
err = writer.Flush()
|
|
if err != nil {
|
|
logger.Errorf("CreateFile Flush %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// ReadFileJSONLine 读取行JSON文件 一行一个JSON
|
|
func ReadFileJSONLine(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()
|
|
arr = append(arr, line)
|
|
}
|
|
|
|
return arr
|
|
}
|