复制一个文件夹中的所有文件和文件夹的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<farry.length;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();
}
}
遍历是使用递归实现
注释写的挺详细的,相信大家直接看注释也看以看的差不多,如果有什么疑问可以随时提出,方便大家一起交流。
转载于:https://www.cnblogs.com/vTree/archive/2011/08/12/2136157.html
复制一个文件夹中的所有文件和文件夹的java程序实现相关推荐
- Python查找文件夹中含有指定关键字的文件
查找文件夹中含有指定关键字的文件,并将该文件复制到另一个文件夹中 ''' 查找文件夹中含有指定关键字的文件,并将该文件复制到另一个文件夹中 ''' import os import shutildef ...
- 实战:从文件夹中庞大的excel(.xlsx)文件中提取并整合数据
从文件夹中庞大的excel(.xlsx)文件中提取并整合数据 Input 需要从文件夹树中提取有格式的单个数据格并汇总. 例如: 2017-2020x市蚊虫数据/2018/7月/abcds方法统计.x ...
- python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退
问题描述: python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退,并提示no module named 'pyproj.datadir' 解决方法: 闪退 ...
- c#文件名去掉后缀_C#如何从文件路径中分离出文件名以及文件扩展名
在C#文件操作的过程中或者Asp.Net文件的处理过程中,有时候知道文件的完整路径信息后,需要从完整路径中分离出文件名以及文件的后缀名等信息,此文将简要介绍C#语言如何从文件路径中分离出文件名以及文件 ...
- debian 文件夹中文件大小_Linux下查看文件和文件夹大小 删除日志
场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...
- python读取多个文件夹_如何从python中的文件夹中读取多个NetCDF文件
我试图绘制多年(1979-2014)的平均温度图,我唯一的问题是尝试从文件夹中读取多个NetCDF(.nc)文件.目前我的程序将绘制单个文件,但我不明白如何使其读取文件夹中的所有文件(每年一个).我想 ...
- c语言 遍历文件夹中所有文件名,C# 遍历文件夹下所有子文件夹中的文件,得到文件名...
假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中 using System.Data; using System.Drawing; using System.Linq; using ...
- python从文件路径中提取文件名、所在文件夹
需求 有的时候我们想从文件路径中提取出包含扩展的文件名,有的时候需要不包括扩展的文件名,还有的时候想要获取文件所在目录,在python中如何快速实现呢? 实现 我们有如下路径 D:\Worksheet ...
- python怎么批量移动文件_python中批量移动目录所有文件函数
#encoding:utf-8 import os,sys import shutil from shutil import Error from shutil import copystat fro ...
- html做在线预览pdf文件,html中在线预览pdf文件之pdf在线预览插件
html中在线预览pdf文件之pdf在线预览插件 最近遇到一个需求,要在html页面查看pdf生成的pdf文件! 翻来覆去找到两种办法 ,最后采用了jquery.media.js插件 方式一 将pdf ...
最新文章
- 艾伟_转载:.NET设计模式:观察者模式(Observer Pattern)
- Android Binder ProcessState IPCThreadState相关介绍
- github创建一个新的tag
- linux 关于目录的命令,Linux ---- 关于目录基本命令
- Scrum Master们,难道每天都在摸鱼?
- 前端必须懂的计算机网络知识—(XSS、CSRF和HTTPS)
- 中国IT业发展案例剖析之--豪杰解霸
- GAN 生成mnist数据
- PM2服务器启动nodejs项目
- 查看.pth文件里面保存了哪些权重及那些权重的shape
- 计算机鼠标能用键盘不能用,电脑键盘鼠标都不能用了,怎么回事?
- 阿里云企业邮箱的imap和pop3设置
- 有可控冷热水隔板的储水式电热水器
- [原][彩]情诗两首[下]--期对酒于襄阳,待重归于长江。
- 【您的凭据不工作】win7远程桌面提示,请输入新凭据。登录没有成功
- 清洁机器人--屏幕显示之OLED屏和LCD屏的区别
- IDEA必装插件-Gyro
- sudo修改文件夹名字_linux
- savour 钱包开发者招募
- 【码上实战】【立体匹配系列】经典AD-Census: (3)代价计算