package test5_copy;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 功能:将文件夹a目录下的所有文件复制到a1文件夹中并将.java改为.jpg文件。
* 数据源:F:\a
* 目的地:F:\a1
* 步骤:
* 1、封装数据源以及数据目的地对象
* 2、判断数据源对象是否为文件夹
* a、是文件夹
* 在目的目录下创建文件夹
* 获取此文件夹目录下的所有File对象,
* 遍历此File对象
* 利用递归办法重新判断是否为文件夹
* b、是文件
* 判断是否是以.java结尾的文件
* 是: 利用数据字节流缓冲区以及字节数组将文件复制到指定目录下
* 进行重命名
* 否: 不进行操作
* 注:此处重命名虽然可以直接剪切,但是剪切效率太低,所以用字节缓冲流实现文件的复制
*/
public class Demo {
public static void main(String[] args) throws IOException {
//注意必须在英文输入状态下输入文件路径尤其是冒号如果是中文的就不能创建文件
//源文件,并不确定是文件还是文件夹
File src=new File("F:\\a");
//考入文件夹目录
File dest=new File("F:\\a1");
//如果目的文件夹不存在便创建此文件夹
if(!dest.exists()) {
dest.mkdir();
}
copy(src,dest);
}
private static void copy(File src, File dest) throws IOException {
//newDest为复制目的地路径加上需要复制的文件或文件夹名字构成的File对象
File newDest=new File(dest, src.getName());
if(src.isDirectory()) {
//创建文件夹
newDest.mkdir();
File [] fa=src.listFiles();
for(File f:fa){
copy(f,newDest);
}
}else {
//复制文件
copyFile(src,newDest);
//将文件改名
if(newDest.getName().endsWith(".java")) {
reName(newDest);
}
}
}
//将文件改名
private static void reName(File newDest) {
String newName=newDest.getName().replace(".java", ".jpg");
File newFlie=new File(newDest.getParentFile(),newName);
newDest.renameTo(newFlie);
}
//复制文件
private static void copyFile(File src, File newDest) throws IOException {
BufferedInputStream bis=new BufferedInputStream(
new FileInputStream(src));
BufferedOutputStream bos=new BufferedOutputStream(
new FileOutputStream(newDest));
byte [] b=new byte[1024];
int len=0;
while((len=bis.read(b))!=-1) {
bos.write(b, 0, len);
bos.flush();
}
bos.close();
bis.close();
}
}
IO流中复制多级文件到指定目录下并将文件名修改为指定格式实例
最新推荐文章于 2023-03-22 15:59:37 发布