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. Kubernetes的整体架构

    K8s将集群中的机器划分为一个主节点和一群工作节点,在主节点上运行着集群管理相关的一组进程kube-apiserver.kube-controller-manager 和 kube-scheduler ...

  2. Vim基础用法,最常用、最实用的命令介绍(保姆级教程)

    配置文件设置 set number (设置行号) set nocompatible (设置不兼容vi模式,不设置会导致许多vim特性被禁用) set clipboard=unnamed (设置普通的复 ...

  3. Javaweb06-JDBC

    1.jdbc.properties配置文件 jdbc.properties driverClass=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localho ...

  4. Dolphin Scheduler 1.1.0升级1.2.0避坑指南

    本文章经授权转载 组件介绍 Apache Dolphin Scheduler是一个分布式易扩展的可视化DAG工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开 ...

  5. MySQL 数据定义语句

    表相关 修改表名 alter table grade rename hang; 新增表字段 alter table grade add `name` varchar(100); 修改表字段类型 alt ...

  6. Qt+ECharts开发笔记(四):ECharts的饼图介绍、基础使用和Qt封装百分比图Demo

    前言   前一篇介绍了横向柱图图.本篇将介绍基础饼图使用,并将其封装一层Qt.  本篇的demo使用隐藏js代码的方式,实现了一个饼图的基本交互方式,并预留了Qt模块对外的基础接口.   Demo演示 ...

  7. 搭建 Webpack 项目步骤

    前言 Node.js 就像是 Java 的虚拟机 + JDK,可以让 js 脱离浏览器沙盒,且提供模块机制.I/O 操作.数据库操作.网络操作等.Node.js 又提供了大量的库,NPM(类似于 Ma ...

  8. C++ 添加程序图标到我的电脑

    C++ 像我的电脑中 百度网盘的 那图标快捷方式.如何生成的呢?设置程序图标到我的电脑 请看下边代码 就ok了(*^__^*) 嘻嘻-- 类似下图: 大家如果看我下边的不是很清楚,可以下载这个具体工程 ...

  9. R型医用变压器为什么越来越受大众喜爱?

    传统的家用电器.手机行业在2018年给电子变压器领域产生重要的冲击性,现如今,智能医疗领域日渐增加,正好是R型医疗变压器行业转型的突破口. 近些年,在我国医疗器械领域因为一个新的科技进步和工程设计持续 ...

  10. .Net Core&RabbitMQ死信队列

    过期时间 RabbitMQ可以为消息和队列设置过期时间Time To Live(TTL).其目的即过期. 消息过期时间 消息存储在队列中时,如果想为其设置一个有限的生命周期,而不是一直存储着,可以为其 ...