批量将多个文件内容,写入一个文件(用到了,就写了一个)

本文介绍了一个使用Java实现的批量文件复制工具,该工具能够从指定目录下读取并复制带有特定后缀的文件到目标目录,支持UTF-8编码以避免中文乱码,并统计了复制的文件数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package cpFile;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class CpFile {

	 
	    public static void main(String[] args) throws Exception {
	    	//存储文件路径,true 代表  可追加
	    	BufferedWriter out1 = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\Desktop\\zerok (1)\\xx.txt",true));
	    	//读取文件路径
	    	String pre="C:\\Users\\Administrator\\Desktop\\GitHub\\";
	    	//读取文件后缀名
	    	String suffix="Impl.java";
	    	//统计复制文件数量
	    	int count=0;
	    	//true 获取存储文件目录下所有存在文件的文件夹全路径,false  获取存储文件路径下所有文件全路径(true的子文件),
	    	ArrayList<String> path = getDirPath(new File[]{new File(pre)},false,suffix);
	         System.out.println("copy starting......");
	         //遍历路径,进行复制
	    	for(String txtName:path){    
	    		//读取路径文件,"utf-8"防止中文乱码
	         BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream (txtName),"utf-8"));
	         //按行读取
	         String str = null;
	         while((str=buf.readLine())!=null){
	        	 //换行
	        	 out1.newLine();
	        	 //写入数据
	 	        out1.append(str);
	         }
	         System.out.println("copy \""+new File(txtName).getName()+"\" successed!");
	         count++;
		      buf.close();
	         }
	        out1.close();
	        System.out.println("copy ending......");
	        System.out.println("Files:"+count);
	    }
	    	
	    //获取最后一层文件夹,sign  true获取最后一层文件夹,false 获取所有文件
	    public static ArrayList<String> getDirPath(File[] files,Boolean sign,String suffix){
		ArrayList<String> fs=new ArrayList<String>();
		for(File f:files){
			if(f.isDirectory())
				fs.addAll(getDirPath(f.listFiles(),sign,suffix));
			else{
				if(sign){
					if(!fs.contains(f.getParent()))
						if(endWithCh(f,suffix))
							fs.add(f.getParent());
					}else{
						if(!fs.contains(f.getPath()))
							if(endWithCh(f,suffix))
								fs.add(f.getPath());
					}
						
				}
		}		
		return fs;
	}
	    //以。。。结尾,"",或者null,默认无后缀名
	    public static Boolean endWithCh(File file,String suffix){
	    	if(suffix==""||suffix==null) return true;
	    	if(file.getName().endsWith(suffix))
	    		return true;
	    	else
	    		return false;
	    	
	    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值