golang文件简单操作
作者:UU常璐图_302 | 来源:互联网 | 2023-01-04 10:48
文章来源:http:sugarmanman.blog.163.comblogstatic81079080201372962431611packagemainimport("f
文章来源:http://sugarmanman.blog.163.com/blog/static/81079080201372962431611/
package main
import (
"fmt"
"io/ioutil"
"os"
"sort"
)
// get file modified time
func FileMTime(file string) (int64, error) {
f, e := os.Stat(file)
if e != nil {
return 0, e
}
return f.ModTime().Unix(), nil
}
// get file size as how many bytes
func FileSize(file string) (int64, error) {
f, e := os.Stat(file)
if e != nil {
return 0, e
}
return f.Size(), nil
}
// delete file
func Unlink(file string) error {
return os.Remove(file)
}
// rename file name
func Rename(file string, to string) error {
return os.Rename(file, to)
}
// put string to file
func FilePutContent(file string, content string) (int, error) {
fs, e := os.Create(file)
if e != nil {
return 0, e
}
defer fs.Close()
return fs.WriteString(content)
}
// get string from text file
func FileGetContent(file string) (string, error) {
if !IsFile(file) {
return "", os.ErrNotExist
}
b, e := ioutil.ReadFile(file)
if e != nil {
return "", e
}
return string(b), nil
}
// it returns false when it's a directory or does not exist.
func IsFile(file string) bool {
f, e := os.Stat(file)
if e != nil {
return false
}
return !f.IsDir()
}
// IsExist returns whether a file or directory exists.
func IsExist(path string) bool {
_, err := os.Stat(path)
return err == nil || os.IsExist(err)
}
//create file
func CreateFile(dir string, name string) (string, error) {
src := dir + name + "/"
if IsExist(src) {
return src, nil
}
if err := os.MkdirAll(src, 0777); err != nil {
if os.IsPermission(err) {
fmt.Println("你不够权限创建文件")
}
return "", err
}
return src, nil
}
type FileRepos []Repository
type Repository struct {
Name string
FileTime int64
}
func (r FileRepos) Len() int {
return len(r)
}
func (r FileRepos) Less(i, j int) bool {
return r[i].FileTime
}
func (r FileRepos) Swap(i, j int) {
r[i], r[j] = r[j], r[i]
}
// 获取所有文件
//如果文件达到最上限,按时间删除
func delFile(files []os.FileInfo, count int, fileDir string) {
if len(files) <= count {
return
}
result := new(FileRepos)
for _, file := range files {
if file.IsDir() {
continue
} else {
*result = append(*result, Repository{Name: file.Name(), FileTime: file.ModTime().Unix()})
}
}
sort.Sort(result)
deleteNum := len(files) - count
for k, v := range *result {
if k+1 > deleteNum {
break
}
Unlink(fileDir + v.Name)
}
return
}
func main() {
//生成文件
dir := "E:/golang/myorm/src/"
file, err := CreateFile(dir, "20130829")
if err != nil {
return
}
//写文件
content := "teststttttt"
l, e := FilePutContent(file+"1.txt", content)
if e != nil && l <= 0 {
return
}
//读文件
// str, _ := FileGetContent(file + "1.txt")
// fmt.Println("str", str)
// size, _ := FileSize(file + "1.txt")
// fmt.Println("size", size)
// ftime, _ := FileMTime(file + "1.txt")
// fmt.Println("ftime", ftime)
// 获取所有文件
//如果文件达到最上限,按时间删除
files, _ := ioutil.ReadDir(file)
delFile(files, 1, file)
fmt.Println("count", len(files))
}
推荐阅读
-
本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ...
[详细]
蜡笔小新 2023-12-12 11:39:00
-
Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ...
[详细]
蜡笔小新 2023-12-14 17:38:12
-
-
本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ...
[详细]
蜡笔小新 2023-12-09 09:55:13
-
本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ...
[详细]
蜡笔小新 2023-12-13 13:12:05
-
本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ...
[详细]
蜡笔小新 2023-12-13 10:06:58
-
本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ...
[详细]
蜡笔小新 2023-12-13 10:00:57
-
本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ...
[详细]
蜡笔小新 2023-12-12 20:56:55
-
本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ...
[详细]
蜡笔小新 2023-12-12 20:02:41
-
本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ...
[详细]
蜡笔小新 2023-12-12 17:47:48
-
本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ...
[详细]
蜡笔小新 2023-12-12 13:05:17
-
本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ...
[详细]
蜡笔小新 2023-12-10 19:32:38
-
本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ...
[详细]
蜡笔小新 2023-12-10 16:21:27
-
本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ...
[详细]
蜡笔小新 2023-12-10 12:24:15
-
本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ...
[详细]
蜡笔小新 2023-12-09 17:55:40
-
本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ...
[详细]
蜡笔小新 2023-12-09 08:30:08
-