合并不同目录下,相同文件的内容(java实现)

场景如下:
path1,path2为2个文件夹的目录,目录下有相同名的txt文件,但内容不同,需要将不同目录下,相同名字的文件内容合并。
比如:在目录path1下有文件
a.txt,内容如下:
1
2
b.txt,内容如下:
6
7
在目录path2下有文件
a.txt,内容如下:
3
4
b.txt,内容如下:
8
9
合并之后,在目录path1下的a.txt,内容为:
1
2
3
4
b.txt,内容如下:
6
7
8
9
[java] view plain copy
import java.io.*;  
import java.util.ArrayList;  
import java.util.List;  
  
public class HandleFile {  
  
      
    public static void mergeFileContent(String path1, String path2) throws IOException {  
          
        File f1 = new File(path1);  
          
        File f2 = new File(path2);  
        //返回该文件夹下所有文件的名称列表  
        String[] name1 = f1.list();  
        for(int m = 0; m < name1.length; m++) {  
            System.out.println(name1[m]);  
        }  
        String[] name2 = f2.list();   
        //list暂时存放path2下单个文件的内容  
        List list = new ArrayList();  
        for(int i=0; i<name1.length; i++){  
            for(int j=0; j < name2.length; j++) {  
                      
                //判断2个文件夹中,文件是否同名;是,将文件2的内容,写入文件1;并且判断是txt文件  
                if( name1[i].equals(name2[j]) && name1[i].endsWith(".txt") ) {                
                        try {  
                                String path4 = path2 + name2[j];  
                                File file2 = new File(path4);  
                                BufferedReader bw;  
                                bw = new BufferedReader(new FileReader(file2));  
                                String line = null;  
                                //先存入list集合中  
                                while((line = bw.readLine()) != null) {  
                                    list.add(line);  
                                }  
                                //合并到文件1  
                                String path3 = path1 + name1[i];  
                                File file1=new File(path3);  
                                BufferedWriter out=new BufferedWriter(new FileWriter(file1,true));  
                                for (int k=0; k<list.size(); k++) {  
                                    out.write((String) list.get(k));  
                                    out.newLine();  
                                }  
                                
                                
                                list.clear();  
                                
                                bw.close();  
                                bw=null;  
                                file2=null;  
                                
                                out.close();  
                                out=null;  
                                file1=null;    
                                  
                                //如果在目录1下,一个文件A在目录2下找到同名的文件A,就不继续在目录2下判断  
                                break;  
                        } catch (FileNotFoundException e) {  
                            // TODO Auto-generated catch block  
                            e.printStackTrace();  
                        }  
                            
                          
                    }  
                  
                  
            }  
        }  
          
    }  
      
      
    //将文件名添加.txt  
    public static void suffixAdd(String path) {  
          
        //检查要重命名的文件是否存在,是否是文件  
        File file = new File(path);  
        if (!file.exists() || file.isDirectory()) {  
            File[] files = file.listFiles();//获取此目录下的文件列表  
  
  
            for (File fileFrom : files) {  
                String fromFile = fileFrom.getName();//文件名  
                String toFileName;  
               
              
                toFileName = fromFile + ".txt";  
                //获取文件的根路径  
                String rootPath = fileFrom.getParent();  
                //需要添加原根路径  
                File toFile = new File(rootPath + File.separator + toFileName);  
                System.out.println("修改后的文件名: " + toFile.getName());  
                if (fileFrom.exists() && !toFile.exists()) {  
                    //开始更名  
                    fileFrom.renameTo(toFile);  
                }  
  
            }  
        } else {  
            System.out.println("File does not exist: " + file);  
            return;  
        }     
          
    }  
      
    public static void main(String[] a) throws IOException{       
        //  
        String path1 = "e:\\merge\\test1\\";  
        String path2 = "e:\\merge\\test2\\";  
          
        mergeFileContent(path1, path2);  
          
        String path = "E:\\addtest\\";  
        suffixAdd(path);  
                  
    }  
      
}  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值