1)编写程序把文件夹"javaSe工具及资料"里所有文件copy到同级目录"new_javaSe工具及资料"文件夹里,
"javaSe工具及资料"文件夹里所有文件都需要copy,要求每个文件的copy互不干扰(多个文件同时copy)。--》利用多线程。
public class Test1 extends Thread {
public static void main(String[] args) {
demo();
}
private static void demo() {
File fileDir=new File("D:\\教学软件\\javaSe工具及资料");
String newPath=fileDir.getParent()+"\\new_"+fileDir.getName();
File newFileDir=new File(newPath);
newFileDir.mkdir();
File[] subFiles=fileDir.listFiles();
for(File subfile:subFiles){
File newFile=new File(newFileDir.getAbsolutePath()+"\\"+subfile.getName());
Runnable ct=new CopyFileTask(subfile,newFile);
Thread t1=new Thread(ct);
t1.start();
}
}
}
class CopyFileTask implements Runnable{
File oldFIle;
File newFile;
public CopyFileTask(File oldFIle, File newFile) {
super();
this.oldFIle = oldFIle;
this.newFile = newFile;
}
@Override
public void run() {
this.copyFile();
}
public void copyFile() {
InputStream bis=null;
OutputStream bos=null;
try {
bis=new BufferedInputStream(new FileInputStream(this.oldFIle), 1024*1024);
bos=new BufferedOutputStream(new FileOutputStream(this.newFile), 1024*1024);
byte[] buff=new byte[5];
int len;
while ((len=bis.read(buff))!=-1) {
bos.write(buff, 0, len);
}
bos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
IoCloseUtil.close(bos,bis);
}
}
}
class IoCloseUtil {
public static void close(Closeable ...clsObjs){
for (Closeable clsObj : clsObjs) {
if(clsObj!=null){
try {
clsObj.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.err.println("关闭的对象:"+clsObj);
}
}
}