黑马程序员技术交流社区
标题:
有没有觉得高新技术部分的视频分文件夹放的很麻烦?
[打印本页]
作者:
15579171087
时间:
2014-9-17 00:33
标题:
有没有觉得高新技术部分的视频分文件夹放的很麻烦?
看完一个视频还要换一个文件夹再打开 受不了,是强迫症么:L
QQ截图20140917002941.png
(303.69 KB, 下载次数: 2)
下载附件
2014-9-17 00:31 上传
于是乎写了个把这些视频放一个文件夹的代码,顺便复习下IO和多线程还有集合
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
public class CopyFile {
public static void main(String[] args) {
//需要复制的文件夹中的文件所在目录
File f=new File("E:\\BaiduYunDownload");
File[] fs=f.listFiles();
ArrayList<File> need=new ArrayList<File>();
for(int i=0;i<fs.length;i++){
if(fs[i].isDirectory()){
need.addAll(getInFile(fs[i]));
}
}
//输出文件夹的目录
File gaoxinFile=new File("E:\\BaiduYunDownload\\高新技术部分");
try {
if(!gaoxinFile.exists())
gaoxinFile.mkdir();
} catch (Exception e) {
e.printStackTrace();
}
//单线程复制文件
/*
for(File e:need){
try {
copyFile(e, new File(gaoxinFile, e.getName()));
} catch (Exception e1) {
e1.printStackTrace();
}
}*/
//多线程复制文件
for(File e:need){
Copy2 c=new Copy2(e,new File(gaoxinFile, e.getName()));
new Thread(c).start();
}
}
//复制文件
public static void copyFile(File inFile,File outFile) throws Exception{
if(outFile.exists()){
System.err.println(outFile.getName()+"\t\t\t已存在");
return;
}
FileInputStream in=new FileInputStream(inFile);
FileOutputStream out=new FileOutputStream(outFile);
byte[] b=new byte[1024];
int temp=0;
while((temp=in.read(b))!=-1){
out.write(b);
}
out.flush();
System.out.println(outFile.getName()+"\t\t成功");
}
//获取文件夹中的所有文件,返回文件集合
public static ArrayList<File> getInFile(File f){
ArrayList<File> inFiles=new ArrayList<File>();
File[] fs=f.listFiles();
for(int i=0;i<fs.length;i++){
//添加以avi结尾的文件
if(fs[i].isFile() && fs[i].getName().endsWith("avi")){
inFiles.add(fs[i]);
}
else {
try{inFiles.addAll(getInFile(fs[i]));}
catch (Exception e) {
}
}
}
return inFiles;
}
}
//多线程第二种方式:实现Runnable接口
class Copy2 implements Runnable{
private File in,out;
public Copy2(File in,File out) {
this.in=in;
this.out=out;
}
@Override
public void run() {
try {
//System.out.println(Thread.currentThread().getName()+"---start");
CopyFile.copyFile(in, out);
} catch (Exception e) {
e.printStackTrace();
}finally{
//System.out.println(Thread.currentThread().getName()+"---end");
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2