ITPub博客

首页 > IT职业 > IT职场 > 用多线程对文件的分来复制 ,比如音乐,word文档,txt,excel

用多线程对文件的分来复制 ,比如音乐,word文档,txt,excel

IT职场 作者:znsk07 时间:2021-09-09 08:55:01 0 删除 编辑

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Worker extends Thread {

private DirManager manager;
// private String copy_From = "E:\amu1"; // 源文件

private String copy_TO_txt = "E:\amu_txt"; // 目标文件
private String copy_TO_xlsx = "E:\amu_xlsx"; // 目标文件
private String copy_TO_zip = "E:\amu_zip"; // 目标文件
private String copy_TO_mp3= "E:\amu_mp3"; // 目标文件
private String copy_TO_pdf= "E:\amu_pdf"; // 目标文件
private String copy_TO_docx= "E:\amu_docx"; // 目标文件
private String  copy_TO_other= "E:\amu_other"; // 目标文件
private String  copy_TO_picture= "E:\amu_picture"; // 目标文件

public Worker(DirManager m) {
    manager = m;
}

public void run() {

    //System.out.println(11);

    // 尝试3次
    int test = 5;
    while (test > 0) {   //这个循环非常巧妙,在经理的提示下完才完成,这个方法必须学会

        File[] dir = manager.getFirstDirectory();

        if (dir != null) {
            processDirectory(dir);

            test = 5;
        } else {

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            test--;

        }
    }

}

private void processDirectory(File[] dir) {

    //File [] get_From2=(new File(dir.getAbsolutePath()).listFiles();
    for(int i=0;i

}

import java.io.File;
import java.lang.reflect.Array;
import java.util.LinkedList;
import java.util.Queue;

public class DirManager {

private Queue queue = new LinkedList(); // 放文件夹的队列

private String copy_From = "E:\awazlik assar"; // 源文件

public DirManager(){

    queue.add(new File(copy_From));

}

public void add1(File dir){

     queue.add(dir);

     System.out.println(queue.size());

}

synchronized public File[] getFirstDirectory() {
    if (!queue.isEmpty()) {
        File dir = queue.poll();// 如果队列不空,返回队列中的头文件
        File [] get=(new File(dir.getAbsolutePath())).listFiles();
        return get;
    } else
        return null;
}

}

public class Main{

public static void main(String[] args) {

    DirManager dirManager = new DirManager();

    for (int i = 0; i 

}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27/viewspace-2797983/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-11

  • 博文量
    114
  • 访问量
    654