• Java之扫描目录,修改文件内容


    扫描目录下文件,修改文件中指定内容

      1 package org.utils.tools.fileoper;
      2 
      3 import java.io.*;
      4 import java.util.ArrayList;
      5 import java.util.List;
      6 
      7 /*
      8 * 修改文件中的内容
      9 * 替换properties文件中的ip
     10 * */
     11 public class EditFile {
     12     public static void main(String args[]) {
     13 //        String inputPath = "C:\workspace\hbase_test\src\main\resource\properties\case_01.properties";
     14 //        String outputPath = "C:\workspace\hbase_test\src\main\resource\properties\case_out.properties";
     15 
     16         String srcStr = "bd.test.com";   //需要替换的字符串
     17         String desStr = "10.15.100.25";          //用于替换的字符串
     18         // 文件目录,不扫子目录
     19         String dirPath = "C:\workspace\work\bdd-bd-test\" +
     20                 "src\test\resources\properties\case\tunny\001";
     21 
     22         File f = new File(dirPath);
     23         String wholeFilePath;
     24         String[] fileNames = f.list();
     25         for (String s : fileNames) {
     26             wholeFilePath = dirPath + "\" + s;
     27             System.out.println("处理文件:" + wholeFilePath);
     28             propertiesChange(wholeFilePath, srcStr, desStr);
     29         }
     30     }
     31 
     32     /*
     33     * 修改文件中的指定内容
     34     * */
     35     public static void propertiesChange(String filePath, String srcStr, String desStr) {
     36         //字符流
     37         FileReader fr = null;
     38         FileWriter fw = null;
     39         //缓冲流
     40         BufferedReader br = null;
     41         BufferedWriter bw = null;
     42 
     43         List list = new ArrayList<>();
     44         //读取文件内容保证在list中
     45         try {
     46             fr = new FileReader(new File(filePath));
     47             br = new BufferedReader(fr);   //扩容,类似加水管
     48             String line = br.readLine();    //逐行复制
     49             while (line != null) {
     50                 //修改指定内容
     51                 if (line.contains(srcStr)) {
     52                     line = line.replace(srcStr, desStr);
     53                 }
     54                 list.add(line);
     55                 line = br.readLine();
     56             }
     57         } catch (IOException e) {
     58             e.printStackTrace();
     59         } finally {
     60             try {
     61                 //关闭流,顺序与打开相反
     62                 br.close();
     63                 fr.close();
     64             } catch (IOException e) {
     65                 e.printStackTrace();
     66             }
     67         }
     68 
     69         //将list中内容输出到原文件中
     70         try {
     71             fw = new FileWriter(filePath);
     72             bw = new BufferedWriter(fw);
     73             for (Object s : list) {
     74                 bw.write((String) s);
     75                 bw.newLine();  //换行输出
     76             }
     77             System.out.println("文件修改成功!");
     78         } catch (IOException e) {
     79             e.printStackTrace();
     80         } finally {
     81             try {
     82                 //关闭流,顺序与打开相反
     83                 bw.close();
     84                 fw.close();
     85             } catch (IOException e) {
     86                 e.printStackTrace();
     87             }
     88         }
     89     }
     90 
     91     /*
     92     * 读取文件并修改指定内容,复制到另一个文件中
     93     * */
     94     public static void propertiesChange(String inputPath, String outputPath, String srcStr, String desStr) {
     95         //字符流
     96         FileReader fr = null;
     97         FileWriter fw = null;
     98         //缓冲流
     99         BufferedReader br = null;
    100         BufferedWriter bw = null;
    101 
    102         try {
    103             fr = new FileReader(new File(inputPath));
    104             br = new BufferedReader(fr);   //扩容,类似加水管
    105             fw = new FileWriter(outputPath);
    106             bw = new BufferedWriter(fw);
    107 
    108             String line = br.readLine();    //逐行复制
    109             while (line != null) {
    110                 if (line.contains(srcStr)) {
    111                     line = line.replace(srcStr, desStr);
    112                 }
    113                 bw.write(line);
    114                 bw.newLine();  //换行输出
    115                 line = br.readLine();
    116             }
    117             System.out.println("文件修改成功!");
    118         } catch (IOException e) {
    119             e.printStackTrace();
    120         } finally {
    121             try {
    122                 //关闭流,顺序与打开相反
    123                 bw.close();
    124                 br.close();
    125                 fw.close();
    126                 fr.close();
    127             } catch (IOException e) {
    128                 e.printStackTrace();
    129             }
    130         }
    131     }
    132 
    133 
    134 }
  • 相关阅读:
    docker 方式安装gitlab时,项目的clone地址及项目文件列表地址为机器名的问题解决办法
    CPU流水线
    Element中el-form嵌套el-table双击编辑提交检验
    java基础知识
    C#多线程下载
    mysql优化
    C++ 算法(一)
    前端vue 的面试总结 以及答案以及前端技术点面试
    C# 组合任务
    C# List去重DistinctBy扩展
  • 原文地址:https://www.cnblogs.com/gongxr/p/7994046.html
Copyright © 2020-2023  润新知