1 package main
2
3 import (
4 "fmt"
5 "os"
6 "path"
7 "path/filepath"
8 )
9
10 func main() {
11 fileInfo, err := os.Stat("C:\\Users\\fcl18\\Desktop\\发言.txt")
12 if err != nil {
13 fmt.Println("err", err)
14 return
15 }
16 fmt.Println(fileInfo)
17
18 fmt.Println(fileInfo.Name()) //文件名
19 fmt.Println(fileInfo.Size()) //文件大小 单位 字节
20 fmt.Println(fileInfo.IsDir()) // 判断是否为目录
21 fmt.Println(fileInfo.ModTime()) //修改时间
22 fmt.Println(fileInfo.Mode()) //权限
23
24 filename1 := "C:\\Users\\fcl18\\Desktop\\发言.txt"
25 filename2 := "ab.txt"
26 //判断是否为绝对路径
27 fmt.Println(filepath.IsAbs(filename1))
28 fmt.Println(filepath.IsAbs(filename2))
29 //获得路径地址 如果是相对路径就会根据main所在目录拼接成完整的目录
30 fmt.Println(filepath.Abs(filename1))
31 fmt.Println(filepath.Abs(filename2))
32
33 //获取父目录
34 fmt.Println("父目录", path.Join(filename1, ".."))
35
36 //创建目录 如果已经存在不会再创建
37 //Mkdir只能创建一层文件夹
38 err1 := os.Mkdir("E:\\网页\\招生+报名\\aa", os.ModePerm)
39 if err1 != nil {
40 fmt.Println("err", err)
41 return
42 }
43 fmt.Println("文件夹创建成功")
44 //MkdirAll可以全部创建
45 err2 := os.MkdirAll("E:\\网页\\招生+报名\\aa\\bb\\cc\\dd", os.ModePerm)
46 if err2 != nil {
47 fmt.Println("err", err2)
48 return
49 }
50 fmt.Println("多层文件夹创建成功")
51
52 //创建文件
53 file1, err3 := os.Create("E:\\网页\\招生+报名\\aa\\a.txt")
54 if err3 != nil {
55 fmt.Println("err", err3)
56 return
57 }
58 fmt.Println(file1.Name())
59 //相对目录
60 file2, err4 := os.Create(filename2)
61 if err4 != nil {
62 fmt.Println("err", err4)
63 return
64 }
65 fmt.Println(file2.Name())
66
67 // file操作
68 file3, err5 := os.Open(filename1) //只读
69 if err5 != nil {
70 fmt.Println("err", err5)
71 return
72 }
73 fmt.Println(file3)
74
75 /*
76 openFile
77 第一个参数 文件目录地址
78
79 第二个参数:文件打开方式
80 O_RDONLY int = syscall.O_RDONLY // open the file read-only.
81 O_WRONLY int = syscall.O_WRONLY // open the file write-only.
82 O_RDWR int = syscall.O_RDWR // open the file read-write.
83 // The remaining values may be or'ed in to control behavior.
84 O_APPEND int = syscall.O_APPEND // append data to the file when writing.
85 O_CREATE int = syscall.O_CREAT // create a new file if none exists.
86 O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist.
87 O_SYNC int = syscall.O_SYNC // open for synchronous I/O.
88 O_TRUNC int = syscall.O_TRUNC // truncate regular writable file when opened.
89
90 第三个参数:文件权限 文件不存在时创建 需指定权限
91 */
92 file4, err6 := os.OpenFile(filename1, os.O_RDONLY|os.O_WRONLY, os.ModePerm)
93 if err6 != nil {
94 fmt.Println("err", err6)
95 return
96 }
97 fmt.Println(file4.Name())
98
99 //关闭文件
100 file4.Close()
101
102 //删除文件或文件夹
103 //Remove只能删除单层为空的目录
104 err7 := os.Remove("E:\\网页\\招生+报名\\aa\\a.txt")
105 if err7 != nil {
106 fmt.Println("err", err7)
107 return
108 }
109 fmt.Println("删除成功")
110 //RemoveAll不管目录是否为空都会删除
111 err8 := os.RemoveAll("E:\\网页\\招生+报名\\aa")
112 if err8 != nil {
113 fmt.Println("err", err8)
114 return
115 }
116 fmt.Println("删除成功")
117
118 }

凑字数

凑字数凑字数

凑字数凑字数凑字数

凑字数凑字数凑字数凑字数

凑字数凑字数凑字数凑字数凑字数

研一入坑Go 文件操作的更多相关文章

  1. 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程

    反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑)   背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...

  2. webpack入坑之旅(五)加载vue单文件组件

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  3. Linux中gz文件操作遇到的一些技巧和坑

    目录 不解压情况下获取gz超大文件的前/后几行? Perl读入gz文件操作? 不能直接通过wc -l 来统计gz文件的行数 前提是gz文件超大,如上百G,肯定不能直接解压来做. 不解压情况下获取gz超 ...

  4. webpack入坑之旅(二)loader入门

    这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack 在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不 ...

  5. gulp入坑系列(2)——初试JS代码合并与压缩

    在上一篇里成功安装了gulp到项目中,现在来测试一下gulp的合并与压缩功能 gulp入坑系列(1)--安装gulp(传送门):http://www.cnblogs.com/YuuyaRin/p/61 ...

  6. 《Java核心技术卷二》笔记(二)文件操作和内存映射文件

    文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7 ...

  7. RxSwift 入坑好多天 - 终于有了一点理解

    一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...

  8. 【Xbox one S】开箱&开机&初入坑心得

    再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...

  9. Linux探索之路1---CentOS入坑笔记整理

    前言 上次跟运维去行方安装行内环境,发现linux命令还是不是很熟练.特别是用户权限分配以及vi下的快捷操作.于是决定在本地安装一个CentOS虚拟机,后面有时间就每天学习一点Linux常用命令. 作 ...

随机推荐

  1. Win10系统下基于Docker构建Appium容器连接Android模拟器Genymotion完成移动端Python自动化测试

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_196 Python自动化,大概也许或者是今年最具热度的话题之一了.七月流火,招聘市场上对于Python自动化的追捧热度仍未消减,那 ...

  2. 从 Delta 2.0 开始聊聊我们需要怎样的数据湖

    盘点行业内近期发生的大事,Delta 2.0 的开源是最让人津津乐道的,尤其在 Databricks 官宣 delta2.0 时抛出了下面这张性能对比,颇有些引战的味道. 虽然 Databricks ...

  3. Linux 域名和DNS

    名字解析的作用: TCP/IP网络中,设备之间的通信依赖IP地址来实现,但是IP地址不好记忆,所以就将每一台设备用一个名字来进行标识,但是这个名字计算机不能解析.所以就需要借助名字解析服务来实现将名字 ...

  4. 一文理解Hadoop分布式存储和计算框架入门基础

    @ 目录 概述 定义 发展历史 发行版本 优势 生态项目 架构 组成模块 HDFS架构 YARN架构 部署 部署规划 前置条件 部署步骤 下载文件(三台都执行) 创建目录(三台都执行) 配置环境变量( ...

  5. Dart 导包时类名冲突

    import 'package:qingyuo_mobile/pages/slices/home_page/tech_slice.dart'; import 'package:qingyuo_mobi ...

  6. cad开发动态块对应的界面

    为了使设计人员更加容易的操作动态块, 应经可能对动态块的制作制定相关的规范, 如动态块的属性 => 类的属性 动态块操作名称(作为变量名,后台数据库的字段) 动态块操作描述  (作为注释,后台数 ...

  7. RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  8. ClickHouse(05)ClickHouse数据类型详解

    ClickHouse属于分析型数据库,ClickHouse提供了许多数据类型,它们可以划分为基础类型.复合类型和特殊类型.其中基础类型使ClickHouse具备了描述数据的基本能力,而另外两种类型则使 ...

  9. 一文搞懂mysql索引底层逻辑,干货满满!

    一.什么是索引 在mysql中,索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录.通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列即可 ...

  10. 多版本并发控制 MVCC

    介绍多版本并发控制 多版本并发控制技术(Multiversion Concurrency Control,MVCC) 技术是为了解决问题而生的,通过 MVCC 我们可以解决以下几个问题: 读写之间阻塞 ...