热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang文件简单操作

文章来源: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?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在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下。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
author-avatar
UU常璐图_302
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有