java复制多级文件夹_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+"\n");

}

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");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值