复制指定目录下的指定文件,并修改后缀名 很重要,也很难!!!

本文介绍了一个Java程序,用于复制指定目录下的所有.java文件到另一个目录,并将这些文件的后缀名改为.jad。程序首先封装源目录和目标目录,然后通过文件过滤器筛选出.java文件,接着逐一复制并修改后缀。
package cn.idcast2;

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;

public class Day12 {
	/*
	 * 需求:复制指定目录下的指定文件,并修改后缀名。 指定的目录是:jad 指定的文件是:.java文件 指定的后缀名是:.jad
	 * 
	 * 数据源:e:\\java\\A.java 
	 * 目的地:e:\\jad\\A.jad
	 * 
	 * 分析:
	 *  A:封装目录
	 *  B:获取该目录下的java文件的File数组 
	 *  C:遍历该File数组,得到每一个File对象 
	 *  D:把该File进行复制
	 *  E:在目的地目录下改名
	 */
	public static void main(String[] args) throws IOException {

		File srcFolder = new File("e:\\java");
		File destFolder = new File("e:\\jad");
		if (!destFolder.exists()) {
			destFolder.mkdir();
		}
		//File的文件名称过滤器功能
		File[] fileArray = srcFolder.listFiles(new FilenameFilter() {

			@Override
			public boolean accept(File dir, String name) {
				// TODO Auto-generated method stub
				return new File(dir, name).isFile() && name.endsWith(".java");
			}
		});
		for (File file : fileArray) {
			String name = file.getName();  //得到e:\\java目录下的A.java文件名称      主要看循环的是什么,这里为file,即用该方法
			File newFile = new File(destFolder, name);  //这里显示的为e:\\jad\\A.java   已经得到文件名称了,接下来就要拼接文件和文件名称
			copyFile(file, newFile);
		}
		File[] destFileArray = destFolder.listFiles();       //遍历
		for (File destFile : destFileArray) {
			String name = destFile.getName();   //得到e:\\jad目录下的A.java         主要要循环的是什么,这里为destFile,即用该方法
			String newName = name.replace(".java", ".jad");    //得到e:\\jad目录下的A.jad
			File newFile = new File(destFolder, newName);    //这里显示的为e:\\jad\\A.jad 
			destFile.renameTo(newFile);
		}
	}

	private static void copyFile(File file, File newFile) throws IOException {
		// TODO Auto-generated method stub
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
				file));
		BufferedOutputStream bos = new BufferedOutputStream(
				new FileOutputStream(newFile));
		byte[] bys = new byte[1024];
		int len = 0;
		while ((len = bis.read()) != -1) {
			bos.write(bys, 0, len);
		}
		bis.close();
		bos.close();
	}
}

  

转载于:https://www.cnblogs.com/zengjiao/p/6279811.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值