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比较函数比较结构体这两个最基本的功能 ...
随机推荐
- HNOI2008 明明的烦恼 (purfer序列 + 组合数学)
传送门 这道题题意描述很清楚,不过我自己做的时候确实是一头雾水……又看了题解,发现要用到一个新知识,叫purfer序列. 我们来简单说一下什么是purfer序列.它可以被看作一种树的表现形式.一棵含有 ...
- VC链接hid.lib出错问题解决方案
写一个HID的客户端小程序,调用了一些HID API,但是链接时出现了奇怪的现象. 尽管我已经把头文件和lib文件加入到了VC的Include和Lib目录中,但不管我用VC链接,还是在DDK环境下链接 ...
- Java中的Cloneable接口与深拷贝、浅拷贝
Cloneable接口是一个标记接口,也就是没有任何内容,定义如下: 这里分析一下这个接口的用法,clone方法是在Object种定义的,而且是protected型的,只有实现了这个接口,才可以在该类 ...
- Nginx: 统计PV、UV、独立IP
1.概念: UV(Unique Visitor):独立访客,将每个独立上网电脑(以cookie为依据)视为一位访客,一天之内(00:00-24:00),访问您网站的访客数量.一天之内相同cookie的 ...
- poj2229【完全背包-规律Orz...】
挑战DP 题意: 被组合数只能是2的整数幂,然后给出一个数问有多少种组合(mod1e10): 思路: 完全背包做啊-还是蛮简单的-(这里取膜要改成加法,省时间-) dp[i]代表对于j的方案数 贴一发 ...
- hihoCoder扩展欧几里得
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h&g ...
- c# KeyDown KeyPress 函数中event 的 Handled属性
很奇怪的 KeyDown中的 Handled.true 只能使 Keys.Back 这类失效, 如果要使比如数字失效,必须设置一个变量 _bHandled = true 然后在紧接着会触发的 KeyP ...
- bzoj 3173: [Tjoi2013]最长上升子序列【dp+线段树】
我也不知道为什么把题看成以插入点为结尾的最长生生子序列--还WA了好几次 先把这个序列最后的样子求出来,具体就是倒着做,用线段树维护点数,最开始所有点都是1,然后线段树上二分找到当前数的位置,把这个点 ...
- Mantis优化改造(功能篇)
共分为两篇,功能篇和技术篇. 时间大约是2016年冬天. 考虑搭一个用于Bug管理和追踪的系统. 综合比较下,选择了小巧的开源工具,Mantis. 在源码基础上,做代码修改,完成了定制版的优化改造. ...
- hdu1068 Girls and Boys 匈牙利算法(邻接表)
#include <cstdio> #include <algorithm> #include <cstring> #include <vector> ...