java-IO流练习

Posted Pororo的博客园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-IO流练习相关的知识,希望对你有一定的参考价值。

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class DirCopyDemo {

    public static void main(String[] args) throws IOException {
        Scanner s = new Scanner(System.in);
        System.out.println("输入源目录路径");
        String s1 = s.nextLine();
        System.out.println("输入目的目录路径");
        String s2 = s.nextLine();
        File from = new File(s1);
        File to = new File(s2);
        if(!to.exists()){
            to.mkdirs();
        }
        CopyDir(from, to);
    }

    private static void CopyDir(File from, File to) throws IOException {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        File[] froms = from.listFiles();
        int len=0;
        byte[] wj = new byte[1024];
        for (File f : froms) {
            if (f.isDirectory()) {
                // 如果是文件夹,需要在to中创建一个名称相同的文件夹,
                // 然后再递归到该文件夹里面,复制相应的文件
                // 对于创建的文件夹名称,需要获取到目的to绝对路径,然后加上f的名称
                File newfile = new File(to.getAbsolutePath() + "\\"
                        + f.getName());
                newfile.mkdirs();
                // 此处就需要进入新建的文件夹内部进行递归
                // 这样才能复制该文件夹内的文件
                CopyDir(f, newfile);
            } else {
                // 在输出目的to的文件名称 需要先获取到f的文件名称 然后加上file2的绝对路径
                 //这样就能创建一个名称相同的文件  
                fis = new FileInputStream(f);
                fos= new FileOutputStream(to.getAbsolutePath()+"\\"+f.getName());
                while ((len = fis.read(wj)) != -1) {
                    fos.write(wj, 0, len);
                    fos.flush();
                }
                fis.close();  
                fos.close();  
            }
        }
    }

}

以上是关于java-IO流练习的主要内容,如果未能解决你的问题,请参考以下文章

Java-IO流实验

Java-io流

java-IO流-其他流

java-IO流

Java-IO流

Java-IO流学习