ZBLOG

goland :寻找文件夹路径为C:\Users\You\Downloads中的csv格式的文件,先判断是否当天的文件,如果是则打开文件并转为utf-8的编码方式,读取文件内容判断标头为“是否留痕的位置”.ioutil.ReadAll(file)已弃用

以下为示例代码:

package main

import (
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"strings"
	"time"
)

func main() {
	downloadsDir := "C:\\Users\\You\\Downloads"
	csvFiles, err := filepath.Glob(filepath.Join(downloadsDir, "*.csv"))
	if err != nil {
		fmt.Println("Error finding CSV files:", err)
		return
	}

	for _, csvFile := range csvFiles {
		fileInfo, err := os.Stat(csvFile)
		if err != nil {
			fmt.Println("Error getting file info:", err)
			continue
		}

		if fileInfo.ModTime().Day() != time.Now().Day() {
			continue // skip file if not created today
		}

		fmt.Println("Processing CSV file:", csvFile)

		fileBytes, err := ioutil.ReadFile(csvFile)
		if err != nil {
			fmt.Println("Error reading file:", err)
			continue
		}

		if !strings.Contains(string(fileBytes), "是否留痕的位置") {
			continue // skip file if header not found
		}

		// convert file to UTF-8 encoding
		fileBytes, err = decodeToUTF8(fileBytes)
		if err != nil {
			fmt.Println("Error decoding file to UTF-8:", err)
			continue
		}

		// do something with file content here
		fmt.Println("File content:", string(fileBytes))
	}
}

func decodeToUTF8(fileBytes []byte) ([]byte, error) {
	// detect source encoding
	encoding, _, _ := charset.DetermineEncoding(fileBytes, "")

	// if already UTF-8, return as is
	if encoding == unicode.UTF8 {
		return fileBytes, nil
	}

	// convert to UTF-8 encoding
	reader := transform.NewReader(bytes.NewReader(fileBytes), encoding.NewDecoder())
	return ioutil.ReadAll(reader)
}

注意,示例代码中使用了第三方包 “golang.org/x/text/encoding/charset” 和 “golang.org/x/text/transform” 来处理编码转换。可以通过 go get 命令进行安装:

go get golang.org/x/text/encoding/charset
go get golang.org/x/text/transform

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=2245

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?