package com.file.study;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.sql.Timestamp;
public class DirClass {
public static void main(String args[]) throws Exception{
File srcDir = new File("java");
if(!(srcDir.exists() && srcDir.isDirectory()))
throw new Exception("directory not exit");
File[] files = srcDir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
});
System.out.println(files.length);
File destDir = new File("jad");
if(!(destDir.exists())) {
destDir.mkdir();
}
System.out.println( new Timestamp(System.currentTimeMillis()));
/*每个文件启动一个线程*/
for(int i = 0; i < files.length; i++) {
/*
FileInputStream fis = new FileInputStream(files[i]);
String destFileName = files[i].getName().replaceAll("\\.java$", ".jad");
FileOutputStream fos = new FileOutputStream(new File(destDir, destFileName));
copy(fis,fos);
fis.close();
fos.close();
*/
Copy c = new Copy(files[i]);
c.start();
}
System.out.println( new Timestamp(System.currentTimeMillis()));
}
/*
private static void copy(FileInputStream ips, FileOutputStream ops) throws Exception {
int len = 0;
byte[] buf = new byte[1024];
while((len = ips.read(buf)) != -1) {
ops.write(buf,0,len);
}
}
*/
}
class Copy extends Thread {
private File ifile;
private File destDir;
public Copy(File ips) {
this.destDir = new File("test");
if(!(destDir.exists())) {
destDir.mkdir();
}
this.ifile = ips;
}
public Copy() {
}
public void run() {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(ifile);
String destFileName = ifile.getName().replaceAll("\\.java$", ".jad");
fos = new FileOutputStream(new File(destDir, destFileName));
int len = 0;
byte[] buf = new byte[1024];
while((len = fis.read(buf)) != -1) {
fos.write(buf,0,len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Java多线程实现文件copy
最新推荐文章于 2022-09-01 21:11:32 发布