欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用java中的IO操作将指定源目录下的指定类型文件拷贝到指定目录中

程序员文章站 2022-06-16 12:51:38
...

需求:运用java中IO操作,将某目录中的某类型文件拷贝到制定的目录中
代码如下:

/**
 * 该代码实现将指定源目录下的指定类型文件拷贝到指定目录中
 */
public class Copy {

    public static void main(String[] args)throws IOException {
        /**
         * 第一个参数源目录
         * 第二个参数文件类型
         * 第三个参数拷贝到的目录
         */
        copy("c:\\",".txt","F:\\2");
        System.out.println("复制成功");
    }

    public static void copy(String sourceDirectory,String fileType, String targetDirectory )throws IOException{
        //判断制定目录是否存在,若不存在,创建该目录
        File target = new File(targetDirectory);
        if (!target.exists()){
            target.mkdirs();
        }
        //创建源文件对象
        File file = new File(sourceDirectory);
        File[] files = file.listFiles();
        if (files == null){//如果文件列表为空,返回
            return;
        }
        for (File file1 : files) {//遍历文件列表
            String s = file1.getName();
            if (s.endsWith(fileType)){
                //调用拷贝方法
                CopyBuffByByte(file1.getAbsolutePath(),targetDirectory);
            }
            if (file1.isDirectory()){//如果该文件为文件夹,继续调用自身,
                //file1.getAbsolutePath()该参数为该文件夹的路径
                copy(file1.getAbsolutePath(),".txt","F:\\2");
            }
        }
    }

    public static void CopyBuffByByte(String sourceDirectory,String targetDirectory)throws IOException {
        //创建文件对象
        File sourceFile = new File(sourceDirectory);
        File targetFile = new File(targetDirectory + File.separator + sourceFile.getName());
        //创建流,此处为节点流
        FileInputStream fileInputStream = new FileInputStream(sourceFile);
        FileOutputStream fileOutputStream = new FileOutputStream(targetFile);
        //使用处理流,提高效率
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
        //创建临时存放区
        byte[] bytes = new byte[1024];
        int length = bufferedInputStream.read(bytes);
        while (length != -1){
            bufferedOutputStream.write(bytes,0,length);
            length = bufferedInputStream.read();
        }
        //关闭流,释放资源
        bufferedInputStream.close();
        bufferedOutputStream.flush();
        bufferedOutputStream.close();
    }
}

如果有什么错误的地方,欢迎指正!谢谢~~~~

相关标签: java IO