java文件夹应用程序_复制一个文件夹中的所有文件和文件夹的java程序实现

使用java程序实现了对文件夹的复制功能:

package demo.io;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.Reader;

import java.util.Date;

public class TestIo {

public static float length = 0;

s public  void isFile(File f ,String dir) throws IOException{ //使用递归的方法遍历该目录下的所有文件和文件夹

File[] farry = f.listFiles(); //得到该文件夹下的所有目录和文件

for(int i=0;i

String fileName = farry[i].getName();

String filePath = farry[i].getPath();

String path = changPath(filePath);   //将路径中的\替换为/

String newPath = newPath(path, dir);   //建立目标文件路径

if(farry[i].isDirectory()){  //判断是否是目录文件

boolean b = createFile(newPath);  //创建与该文件夹同名的目标文件中的文件夹 创建成功返回true失败返回false

System.out.println(fileName);

System.out.println(filePath);

System.out.println(newPath);

System.out.println(b);

System.out.println("目录名:"+farry[i].getName() +" : 路径: "+farry[i].getPath());  //打印该目录的名称和路径

isFile(farry[i],dir);        //递归调用该方法

}else{  //如果不是目录文件复制该文件到指定的路径上

copyFile(path, newPath); //将该文件复制到目标文件夹中

totalLength(farry[i].length()/1024);

System.out.println("文件名:"+farry[i].getName()+" :路径: "+farry[i].getPath()+" : 文件大小:"+farry[i].length()/1024+"KB");

}

}

}

public String changPath(String path){  //修改路径

path = path.replace("\\","/");

return path;

}

public String newPath(String path,String dir){  //创建新的目录地址

String newPath = path.substring(path.indexOf(":")+1);

newPath = dir+newPath;

return newPath;

}

public boolean createFile(String path) throws IOException{   //创建文件夹

File f = new File(path);

boolean flag = false;

// f.createNewFile();

flag =  f.mkdir();

if(f.isDirectory()){

flag = true;

}

return flag;

}

public void copyFile(String inPath,String outPath){ //复制文件夹中的文件到目标文件夹

try {

BufferedReader br = new BufferedReader(new FileReader(inPath));

BufferedWriter bw = new BufferedWriter(new FileWriter(outPath));

String len = br.readLine();

while (len != null) {

bw.write(len);

len = br.readLine();

}

br.close();  //关闭输入流

bw.close();  //关闭输出流

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void firstCopy(File f, String dir){  //在复制之前建立目标文件夹中的根目录 如果该文件不是文件夹则直接复制该文件

String path = f.getPath();

path = changPath(path);

String newPath = newPath(path, dir);

if(f.isDirectory()){

try {

boolean flag = createFile(newPath);

isFile(f,dir); //遍历该文件夹

} catch (IOException e) {

// TODO Auto-generated catch block

System.out.println("路径不正确");

e.printStackTrace();

}

}else{ //不是文件夹则直接复制该文件

copyFile(path, newPath);

}

}

public float totalLength(float f){ //计算该文件夹中所有文件的总长度

length = length+f;

return length;

};

public static void main(String[] args) throws IOException {

TestIo t = new TestIo();

Date date = new Date();

long start = 0;

long end = 0;

start = date.getTime();

File f = new File("F:/11");  //需要拷贝的文件或文件夹路径

t.firstCopy(f, "E:/22");         //目标路径

Date d2 = new Date();

end = d2.getTime();

System.err.println("总用时为:"+(end-start));

System.err.println("复制文件的总大小为:"+length/1024+" MB");

// t.doCopy2();

}

}

遍历是使用递归实现

注释写的挺详细的,相信大家直接看注释也看以看的差不多,如果有什么疑问可以随时提出,方便大家一起交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值