• java中递归实现复制多级文件夹


    常见的流的用法

    递归实现复制多级文件夹

    FileInputStream & FileOutputStream

    String content = null;//用来储存解码后的byte数组
    int size=0;//用来存储每次从文件读取的字节数
    byte[] buffer = new byte[1024];//用作读进程序与从程序写出的媒介
    FileInputStream r = new FileInputStream("D:\table.sql");//读取文件
    FileOutputStream w = new FileOutputStream("kk.sql");
    //每次从文件读取字节数为buffer的长度,读到尽头返回-1
    while( (size=r.read(buffer)) !=-1){
        //把size容量的buffer转为字符串
        content=new String(buffer,0,size);
        System.out.println(content);
        //将buffer内容写入
        w.write(buffer);
    }
    r.close();
    w.close();
    

    BufferReader & BufferWriter

    据说缓冲流是利用将读到的数据先放在一个地方,然后一次性写入内存而不是读一个写一个。
    但是这个地方是什么呢?如果是数组,那么和FileInputStream好像没什么区别

    BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\table.sql"));
    BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("ke.sql"));
    String string = "";
    while((string=bufferedReader.readLine())!=null){
        System.out.println(string);
        bufferedWriter.write(string+"
    ");
    }
    bufferedReader.close();
    bufferedWriter.flush();
    bufferedWriter.close();
    

    递归实现复制多级文件夹

    必须知道的几个方法:

    • isDirectory()判断文件是否是文件夹
    • mkdirs()在指定位置创建文件夹可以创建多级目录
    • mkdir()只能在本目录下创建文件夹
    • getAbsolutePath()返回绝对路径
    • getName()返回此文件的名字
    • listFiles()返回此文件下的所有文件

    思想很简单,如果是文件则复制,如果是文件夹则先复制文件夹再递归一下源文件夹下的所有文件,关键是用好getAbsolutePath(),getName()这两个方法。

    public class NotAnonymous{
    	public void copy(String src,String dest) throws IOException{
    		BufferedReader bufferedReader = new BufferedReader(new FileReader(src));
    		BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(dest));
    		String string = null;
    		while((string = bufferedReader.readLine())!=null){
    			bufferedWriter.write(string);
    		}
    		bufferedWriter.flush();
    		bufferedReader.close();
    		bufferedWriter.close();
    	}
    	public void copyFolder(String src,String dest) throws IOException{
    		File startFoler = new File(src);
    		if (startFoler.isDirectory()) {
    			File kFile = new File(dest+"/"+startFoler.getName());
    			kFile.mkdirs();
    			File[] files = startFoler.listFiles();
    			for (File file : files) {
    				copyFolder(file.getAbsolutePath(), kFile.getAbsolutePath());
    			}
    		}else {
    			copy(src, dest+"/"+startFoler.getName());
    		}
    	}
    	public static void main(String[] args) throws IOException {
    		NotAnonymous notAnonymous = new NotAnonymous();
    		notAnonymous.copyFolder("E:/test", "F:/hello");
    	}
    }
    
  • 相关阅读:
    storm概述
    Mac下python路径
    Frida的安装
    Mac上安装多版本python的手工处理方式
    idea下编写shell脚本并执行
    CTF PWN专用虚拟机
    二叉树输入与存储的问题
    逆向推荐博客(持续更新)
    Kali 爬坑日记
    官宣:从windos服务器迁移到linux
  • 原文地址:https://www.cnblogs.com/bihanghang/p/9958068.html
Copyright © 2020-2023  润新知