golang结构体排序 - 根据下载时间重命名本地文件
喜M拉Y下载音频到手机,使用ximalaya.exe 解密[.x2m]为[.m4a]
根据文件下载创建时间,顺序重命名文件,方便后续播放。 源码如下:
package main import (
"fmt"
"io/ioutil"
"os"
"path"
"sort"
"strconv"
) //定义一个通用的结构体
type Bucket struct {
Slice []interface{} //承载以任意结构体为元素构成的Slice
By func(a,b interface{})bool //排序规则函数,当需要对新的结构体slice进行排序时,只需定义这个函数即可
}
/*
定义三个必须方法的准则:接收者不能为指针
*/
func (this Bucket)Len()int { return len(this.Slice)} func (this Bucket)Swap(i,j int){ this.Slice[i],this.Slice[j] = this.Slice[j],this.Slice[i] } func (this Bucket)Less(i,j int)bool { return this.By(this.Slice[i], this.Slice[j]) } type FileInfo struct {
name string `json:"name"`
time int64 `json:"time"`
} func main() {
filePath := "C:\\超品相师\\"
nameName := "超品相师"
num := int64(1) files, _ := ioutil.ReadDir(filePath) results := Bucket{} for _, f := range files {
ext := path.Ext(f.Name())
if ext ==".x2m" {
u := FileInfo{
name:f.Name(),
time: f.ModTime().Unix(),
}
results.Slice= append(results.Slice,u)
//fmt.Println(f.Name(), f.ModTime().Unix())
}
} time_by := func(a,b interface{})bool {
return a.(FileInfo).time<b.(FileInfo).time
}
results.By= time_by sort.Sort(results)
//fmt.Println(results.Slice) for _,n := range results.Slice { x2m_name := n.(FileInfo).name
m4a_name := x2m_name[0:len(x2m_name)-4] + ".m4a"
fmt.Println(m4a_name) b := strconv.FormatInt(num, 10)
switch {
case num < 10 && num >= 1:
b = "000" + b
case num < 100 && num >= 10:
b = "00" + b
case num < 1000 && num >= 100:
b = "0" + b
}
os.Rename(filePath + m4a_name, filePath + nameName + b +".m4a")
num ++
}
}
golang结构体排序 - 根据下载时间重命名本地文件的更多相关文章
- golang结构体json格式化的时间格式
golang结构体json格式化的时间格式 在我们开发中,经常会解析time.Time 往往前台传过来的时候,是个string 但是我们希望在结构体转成time.Time type Param str ...
- golang 结构体中的匿名接口
golang 结构体中的匿名接口 代码示例 golang 中,可以给结构体增加匿名field,可参考 unknwon 大神的书. 匿名字段和内嵌结构体 但,golang同时也可以给结构体定义一个匿名i ...
- <algorithm>里的sort函数对结构体排序
题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...
- JustOj 2039: 成绩排名 (结构体排序)
题目描述 每次期末考试成绩出来之前的一段时间大豪哥心里都是痛苦的,总感觉自己会在班上排名特别差.所以当成绩出来以后大豪哥想快点知道班上的总排名,以便知道自己的排名.(PS:大豪哥班上有个学霸名叫日天, ...
- 第m大的身份证号码(局部排序代全局、结构体排序)
第m大的身份证号码(点击) 时间限制: 1 Sec 内存限制: 128 MB ...
- 小球(总结sort和cmp函数、结构体排序)
问题 N: 小球(点击) 时间限制: 1 Sec 内存限制: 128 MB ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在 ...
- 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...
随机推荐
- 默认action和ActionSupport
默认action: <action></action>中的name属性值与<default-action-ref></default-action-ref&g ...
- Vs2013+opencv2.4.12+x64用VideoCapture无法打开视频
环境变量中匹配的是x86的opencv_ffmpeg244.dll,与项目不匹配,需在项目exe文件同目录下添加X:\opencv\opencv2.4.12\build\x64\vc12\bin\op ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 20. Model Binding
模型绑定 这是个最简单的绑定 先从表单找.再从路由的值上找,最后去QueryString上找 通过反射获取这个类型的属性进行填充.反射完有几个属性,就开始去找着几个属性并绑定值 复杂类型 最后又加了一 ...
- Playground Tutorial
In this step by step tutorial we'll walk through setting up a business network, defining our assets, ...
- TP5之model
使用model 查询数据,添加数据,修改数据,删除数据 聚合操作 获取器,修改器 自动添加时间戳(创建时间,修改时间) 软删除 1.使用model查询数据 $res = User::get(1); / ...
- C++结构体的应用_YCOJ
结构体是一种自定义的东西,用struct来定义.在他里面, 可以装许多东西,比如int,string,char,bool等等等等. 如: struct a{ string name; int a; i ...
- bzoj3343 教主的魔法【分块入门】By cellur925
题意:维护一个数列,给出维护区间加法,询问区间内大于等于某个值的元素个数. 算法:分块.因为本题第二问显然可以用二分的思想,但是这貌似并不符合区间可加性,线段树好像就不好用了呢.所以本蒟蒻学习了分块. ...
- Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源
为什么要压缩页面静态资源 对于个人博客来说,优化页面的访问速度是很有必要的,如果打开你的个人站点,加载个首页就要十几秒,页面长时间处于空白状态,想必没什么人能够忍受得了吧.我个人觉得,如果能把页面的加 ...
- htm5 + ajax 文件上传
好文 http://www.cnblogs.com/morlin/p/4930822.html 后台接收 FormData 的参数一直为空,将jquery改为最高版本,问题解决.测试发现IE10以上才 ...
- android 启动报错
报错如下: AAPT err(Facade for 1532009679): libpng error: Read Error Error:Execution failed for task ':ap ...