Java修炼——文件夹的复制
文件夹的复制用到了俩个流:缓冲流和文件字节流
缓冲流用来加快写入和读取速度。
在这里我简述一下复制文件夹的过程,当然复制文件夹都可以,复制文件更是不在话下
1.首先要明确俩点。要复制的文件夹的位置(源文件目录),还有一个就是你需 要复制到哪的文件夹位置(目的文件目录)。
2.就是判断目标文件是否文在,要是没有那就创建。
3.第三个就是获取传进来的源文件目录,遍历他。
4.然后就是分为俩步去复制,第一步就是判断是不是文件,是文件就直接复制,第二步,如果不是文件那就是目录,目录我们可以用递归的算法去将目录文件再去遍历,执行第一步。
5.最后就是打印文件,这里需要仔细看,我们需要的是文件目录,而不是文件夹 目录,因此我们需要在打印的目录后面拼接文件的名字。
请看代码
(所需要注意的就是在打印输出的时候,需要将文件夹名称后面拼接上文件的名字,这样就可以直接得到文件的目录了):
package com.bjsxt.ioproject;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class TestCopyFiles {
public static void main(String[] args) {
File srcDir=new File("F:\\****\\资料");
File targetDir=new File("F:\\*****\\项目\\测试复制目录");
CopyDir(srcDir, targetDir);
// File srcFile=new File("F:\\*****\\项目\\day1\\note.txt");
// File targetFile=new File("F:\\*****\\项目\\note.txt");
// CopyFile(srcFile, targetFile);
}
public static void CopyDir(File srcDir,File targetDir) {
if (!targetDir.exists()) {
targetDir.mkdir();
}
File[] listFiles = srcDir.listFiles();//获取目录下的全部文件
//遍历所有集合文件
for (File file : listFiles) {
if (file.isFile()) {
//如果是文件,那就调用赋值文件的方法,并且需要拼接地址
CopyFile(new File(srcDir+"//"+file.getName()), new File(targetDir+"\\"+file.getName()));
System.out.println(file.getName()+"文件复制完成!");
} else {
//如果是目录,那就调用递归,自己调用自己
CopyDir(new File(srcDir+"//"+file.getName()), new File(targetDir+"\\"+file.getName()));
System.out.println(file.getName()+"文件夹复制完成!");
}
}
}
public static void CopyFile(File srcFile,File targetFile) {
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {
bis = new BufferedInputStream(new FileInputStream(srcFile));
bos = new BufferedOutputStream(new FileOutputStream(targetFile));
byte [] b=new byte[1024];
int len=0;
while ((len=bis.read(b))!=-1) {
bos.write(b, 0, len);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (bos!=null) {
bos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (bis!=null) {
bis.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果:
Java修炼——文件夹的复制的更多相关文章
- java实现文件夹(包括其中的子文件夹、子文件)的复制——递归
这是学校java课的一道实验题,题目如下:编程,根据指定的源和目标位置,完成指定文件或文件夹(包括其中的子文件夹.子文件)的复制. 以下是我的实现,使用了递归: package com.simon.m ...
- 工具:从一个文件夹中复制jar到另一个文件夹中
工具类:从一个文件夹中复制jar到另一个文件夹中 需要的小伙伴可以试一试,很爽哦,有时候真的很需要! 需求:当我们拿到一个maven项目时,而maven项目的jar包都是通过pom.xml文件管理的, ...
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
建立好一个Maven项目后,如果Java Resources资源文件下没有src/main/java文件夹,并且在手动创建这个文件时提示“已存在文件”. 这说明,在这个项目配置中已经有了src/m ...
- java 遍历文件夹里的文件
Java遍历文件夹的2种方法: A.不使用递归: import java.io.File; import java.util.LinkedList; public class FileSystem { ...
- JAVA 遍历文件夹下的所有文件
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- linux下跨服务器文件文件夹的复制
文件的复制:scp –P (端口号) ./authorized_keys berchina@hadoop002:/home/berchina 文件夹的复制:scp -r -P (端口号) /home/ ...
- JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- Java生成文件夹
Java生成文件夹 1.说明 判断文件夹是否存在,如果不存在就创建该文件夹,并打印其路径:如果存在,打印其路径 2.实现源码 /** * @Title:BuildFolder.java * @Pack ...
随机推荐
- day5-字典专区
# 字典# dict 1.fromkeys()根据序列,创建字典,并指定统一的值 v = dict.fromkeys(["],123) print(v) {': 123} 2.get()根据 ...
- mpvue+小程序云开发,纯前端实现婚礼邀请函(相册小程序)
请勿使用本文章及源码作为商业用途! 前言 当初做这个小程序是为了婚礼前的需要,结婚之后,希望这个小程序能够留存下来,特地花了一些空闲时间将小程序转化成为“相册类小程序” 体验码 准备工作 mpvue框 ...
- Python 基础之re 模块
Python 基础之大话 re 在使用re模块中主要会用到一下几个方法: re.match() #从头匹配一个字符串 re.search() #浏览全部字符串,匹配第一个符合规则的字符串 re.fin ...
- 201871010114-李岩松《面向对象程序设计(java)》第八周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- Java面向对象程序设计第15章5
5. 利用URLConnetction对象编写程序返回某网站的首页,并将首页的内容存放到文件当中. import java.net.*; import java.io.*; public class ...
- shell的运用 : jenkins 编译 打包前端发布 生产(tomcat)
生产隔离做得非常.....文件上传只能通过固定ip机器的sftp账户上传,账户密码每个月要写申请才能获得. 登陆生产服务只能通过浏览器登陆!!! 发布一次生产,很痛苦. 做了简单的shell来减轻痛苦 ...
- [java] 集合的架构——1张图表示
- DAGScheduler stage 划分算法
DAGScheduler stage 划分算法 stage划分算法很重要,对于spark开发人员来说,必须对stage划分算法很清晰,知道自己编写的spark Application被划分成了几个jo ...
- Python 面向对象-下篇
面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实 ...
- 力扣(LeetCode)平方数之和 个人题解
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 示例2: 输入: 3 ...