当前位置: 首页 > news >正文

Go 常用文件操作

查找文件/目录

os.Stat(String)

组合路径

dir, _ := homedir.Dir()
filename := args[0]
path := filepath.Join(dir, filename)

homedir.Dir()为home根目录。

filepath.Join 会自动处理分隔符,将目录和文件名组合成文件路径。

检查是否含有后缀.json

strings.HasSuffix(filename, ".json")

创建新文件并写入

f, err := os.Create("/tmp/dat2")defer f.Close()
d2 := []
{115, 111, 109, 101, 10}n2, err := f.Write(d2)
n3, err := f.WriteString("writes\n")f.Sync()

获取文件夹下所有文件

files, err := os.ReadDir(dir)
if err != nil {return nil, err
}var jsonFiles []fs.DirEntry
for _, file := range files {if filepath.Ext(file.Name()) == ".json" {jsonFiles = append(jsonFiles, file)}
}

读取文件

f, err := os.Open(filepath.Join(dir, jsonFile.Name()))
if err != nil {fmt.Println(err)return
}defer f.Close()content, err := io.ReadAll(f)
if err != nil {fmt.Println(err)return
}

按行读取

package mainimport ("bufio""fmt""log""os"
)func main() {file, err := os.Open("file.txt")if err != nil {log.Fatal(err)}defer file.Close()scanner := bufio.NewScanner(file)for scanner.Scan() {fmt.Println(scanner.Text())}// 检查是否为扫描异常而导致的提前退出if err := scanner.Err(); err != nil {log.Fatal(err)}
}

按空格分割

package mainimport ("fmt""strings"
)func main() {line := "This is a sample line"words := strings.Split(line, " ")fmt.Println(words)
}

按空格分成两部分

package mainimport ("fmt""strings"
)func main() {line := "This is a sample line"parts := strings.SplitN(line, " ", 2)fmt.Println(parts)
}

检查一个文件是否存在

// 检查文件是否存在
if _, err := os.Stat(file); os.IsNotExist(err) {return file, fmt.Errorf("%s does not exist", file)
}

检查是否为文件夹

fileInfo, err := os.Stat(filepath)fileInfo.IsDir()

如何将一行的最后一段字符串和前面分开

在Go中,你可以使用strings包中的LastIndex函数来找到最后一个空格的位置,然后使用[:index][index+1:]来分割字符串。以下是一个例子:

package mainimport ("fmt""strings"
)func main() {line := "This is a sample line"lastSpaceIndex := strings.LastIndex(line, " ")firstPart := line[:lastSpaceIndex]lastPart := line[lastSpaceIndex+1:]fmt.Println(firstPart)fmt.Println(lastPart)
}

这段代码首先找到最后一个空格的位置,然后使用这个位置来分割字符串。firstPart是最后一个空格之前的部分,lastPart是最后一个空格之后的部分。

http://www.lryc.cn/news/389006.html

相关文章:

  • 大数据、人工智能、云计算、物联网、区块链序言【大数据导论】
  • ComfyUI流程图、文生图、图生图步骤教学!
  • CSS基础知识学习指南
  • 力扣hot100 -- 贪心算法
  • P2P文件传输协议介绍
  • Spring Boot集成Spring Mobile快速入门Demo
  • 走进开源企业 | 湖南大学OpenHarmony技术实训活动在开鸿智谷顺利举办!
  • TCP单进程循环服务器程序与单进程客户端程序
  • QT+winodow 代码适配调试总结(二)
  • 百家讲坛 | 裴伟伟:企业中安全团队应当如何反馈漏洞
  • 巧用Fiddler中的Comments提升接口测试效率
  • 停车场车牌识别计费系统,用Python如何实现?
  • Linux内核——Linux内核体系模式(二)
  • Spring MVC的高级功能——异常处理(一)简单异常处理器
  • 【面试干货】Static关键字的用法详解
  • 软件工程实验
  • 对于复杂的网页布局,如多列布局和网格布局,CSS 有哪些最佳实践和技巧?
  • Spring Boot中集成Redis实现缓存功能
  • arco disign vue 日期组件的样式穿透
  • 【深度学习】pytorch训练中的一个大坑
  • python全局解释器锁(GIL)
  • 无人机的起源
  • 专题六:Spring源码之初始化容器BeanFactory
  • 缓存双写一致性(笔记)
  • 运动馆预约管理系统设计
  • 第五届计算机、大数据与人工智能国际会议(ICCBD+AI 2024)
  • 高效的向量搜索算法——分层可导航小世界图(HNSW)
  • 【MySQL备份】Percona XtraBackup全量备份实战篇
  • 港口危险货物安全管理人员考试题库(含答案)
  • 什么是 JVM( Java 虚拟机),它在 Java 程序执行中扮演什么角色?