前言:时不我待,忽而已春,初夏将至。然惊觉自身Java基础仍薄弱不堪,虽“雄关万道真如铁”,只得“万里关山从头越”。把基础打扎实才是根本,对于日后的工作而言也是极为重要。通过不断的学习和理解加上手动实践代码程序,才是编程学习的上上之选!
题目:使用多线程实现文件的复制。输入初始文件路径,输入目标文件夹路径,实现复制操作。
思路:
1、如果只是实现文件的复制操作,可以通过文件的reNameTo()方法实现,但是如果文件包括文件夹那就只能通过文件IO流操作实现。
2、首先,最基本的实现遍历一个文件夹所有文件并打包到一个集合中。
3、启用多线程,建立线程池,对文件进行IO流操作实现文件的复制。
一、文件的遍历
1、获取全部文件
public static List GetAllFiles(String SourceFile)//获取所有文件
{
List<File> FileList=new ArrayList<>();//文件列表
File file=new File(SourceFile);//获取源文件
if (file.exists()&&file.isDirectory()) {//如果文件存在且是文件夹形式则进行递归
FileList = LongEegodic(file, FileList);
}
return FileList;
}
2、递归
public static List LongEegodic(File file,List res)//递归获取文件、文件夹
{
File filelist[]=file.listFiles();
if (filelist==null)//文件为空直接返回
return null;
for (File file1:filelist)
{
res.add(file1);//无论是文件夹还是文件都加入列表
LongEegodic(file1,res);//递归,继续获取子文件
}
return res;
}
二、文件的IO流实现文件的复制操作
public static void Copy(F