复制指定目录下指定后缀名的文件并修改后缀名

package cn.itcast_04;

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.FilenameFilter;
import java.io.IOException;

/*
 * 
 * 需求:复制指定目录下指定后缀名的文件并修改后缀名
 * 指定的文件是:.java文件
 * 指定的后缀名是:.jpg
 * 指定的目录是:text
 * 
 * 数据源:E:\\dome\\2.java
 * 目的地:E:\\text\\2.jpg
 * 
 * 分析;
 *      A:封装目录
 *      B:获取该文件夹下的Java文本的File数组
 *      C:遍历该数组,得到每一个对象
 *      D;把该File复制
 *      E:在目的地目录下改名
 * 
 */
public class 复制指定目录下指定后缀名的文件并修改后缀名 {

	public static void main(String[] args) throws IOException {
		//封装目录
		File scrFolder = new File("E:\\dome");
		//封装目的地
		File desFoler = new File ("E:\\text");
		
		//如果没有文件夹,就创建
		if(desFoler.exists()) {
			desFoler.mkdirs();
		}
        
		
		//获取该目录下的Java文件的File数组
		File[] fileArray = scrFolder.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				return new File(dir,name).isFile() && name.endsWith(".java");
			}
		});
		
		//遍历File数组,得到每一个File对象
		for(File file: fileArray) {
			//System.out.println(file);
			//数据源:E:\dome\2.java
			//目的地:E:\\text\2.jpg
			String name = file.getName();
			//System.out.println(name);//2.java
			File newFile = new File(desFoler,name);
			copy(file,newFile);
		}
		//在目的地目录下改文件名
		File[] desFileArray = desFoler.listFiles();
		for(File file:desFileArray) {
			//System.out.println(file);
			//E:\\text\\1.java
			String name = file.getName();//1.java
			String newName = name.replaceAll(".java", ".jpg");//1.jpg
			//路径相同才改名
			//路径不同是剪切
			File newFile = new File(desFoler,newName);
			file.renameTo(newFile);
            //file为E:\\text\\1.java
			//newFile为E:\\text\\1.jpg
		}
	}

	private static void copy(File file, File newFile) throws IOException {
		BufferedInputStream  bi = new BufferedInputStream(
				new FileInputStream(file));
		BufferedOutputStream  bo = new BufferedOutputStream(
				new FileOutputStream(newFile));
		
		byte[] by = new byte[1024];
		int len = 0;
		while((len = bi.read(by)) != -1) {
			bo.write(by,0,len);
		}
		bo.close();	
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unknown To Known

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值