文件的重命名与移动操作
有时候为了对文件进行统一访问与管理,需要把文件进行重命名,并移动到新的文件夹,如何实现呢?
一枚简单的java小程序即可实现:
part_1:需求:我需要把<(e:\baiduyun\传智播客_张孝祥_java多线程与并发库高级应用视频教程下载)>文件夹下的所有子文件夹下的视频文件重命名,并移动到新的位置<(e:\baiduyun\张孝祥_java多线程与并发库)>;
part_2:目录结构如下:
e:\baiduyun
e:\baiduyun\传智播客_张孝祥_java多线程与并发库高级应用视频教程下载
e:\baiduyun\传智播客张孝祥_java多线程与并发库高级应用视频教程下载\01传智播客张孝祥传统线程技术回顾
part_3:程序源码+注释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
package cn.mike.demo;
import java.io.file;
import java.io.filenotfoundexception;
import java.util.arraylist;
import java.util.list;
/**
* @author administrator
* @usage 该程序实现文件的重命名与移动操作;
*/
public class renamefiles {
private static file srcfolder;
// 源文件夹
private static file destfolder;
// 目的文件夹
private static list<file> srcfiles;
// 存放所有待命名的文件
static {
srcfolder = new file( "e:\\baiduyun\\传智播客_张孝祥_java多线程与并发库高级应用视频教程下载" );
destfolder = new file( "e:\\baiduyun\\张孝祥_java多线程与并发库" );
srcfiles = new arraylist<file>();
}
public static void main(string[] args) {
// 对文件夹的合法性(是否存在)进行校验
try {
checkfolder();
}
catch (filenotfoundexception e) {
e.printstacktrace();
return ;
}
// 遍历源文件夹把要修改的文件放到集合中
iterategetfiles(renamefiles.srcfolder);
// 对集合中的元素进行重命名(并移动到目标文件夹)
iteraterename();
}
// end method-main
private static void checkfolder() throws filenotfoundexception {
if (!renamefiles.srcfolder.exists()) {
throw new filenotfoundexception( "指定的源文件夹不存在." );
}
if (!renamefiles.destfolder.exists()) {
throw new filenotfoundexception( "指定的目标文件夹不存在." );
}
}
private static void iteraterename() {
string aviname = null ;
string tempstr = null ;
stringbuilder strbuilder = new stringbuilder();
file tempfile = null ;
string sequencenumber = null ;
string detailname = null ;
// 遍历list集合,逐个进行重命名
for (file each : renamefiles.srcfiles) {
aviname = each.getname().substring( 0 , each.getname().length() - 4 );
// 获取文件名称(除去后缀名".avi")
tempstr = each.getparent();
// 父文件夹的名称
sequencenumber = string.format( "%02d" , integer.valueof(aviname));
// 两位的序号,不足两位用0补齐,例如:01
detailname = tempstr.substring(tempstr.lastindexof( "_" ) + 1 );
// 视频文件的详细内容,例如:传统线程互斥技术
strbuilder.append(sequencenumber + "_" + detailname + ".avi" );
tempfile = new file(renamefiles.destfolder, strbuilder.tostring());
// 新文件的path
// each.renameto(tempfile);//核心代码(实现重命名和移动)
system.out.println(tempfile.tostring());
// 打印到控制台以便调试
strbuilder.delete( 0 , strbuilder.length());
// 切记将strbuilder进行清空
}
// end foreach
}
// end method-iteraterename
private static void iterategetfiles(file srcfile) {
// 如果是文件夹,就继续深入遍历
if (srcfile.isdirectory()) {
file[] files = srcfile.listfiles();
for (file each : files) {
iterategetfiles(each);
}
} else if (srcfile.getabsolutepath().endswith( ".avi" )) {
// 不是文件夹而且文件格式为avi,就将该文件添加到待命名文件的list集合中
renamefiles.srcfiles.add(srcfile);
}
}
// end method-iterategetfiles
}
// end class-renamefiles
|
part_4:重命名及移动后的效果:
e:\baiduyun\张孝祥_java多线程与并发库
总结
以上就是本文关于java文件的重命名与移动操作实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/love_legain/article/details/54972387