1 packageorg.utils.tools.fileoper;2
3 import java.io.*;4 importjava.util.ArrayList;5 importjava.util.List;6
7 /*
8 * 修改文件中的内容9 * 替换properties文件中的ip10 **/
11 public classEditFile {12 public static voidmain(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 = newFile(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 voidpropertiesChange(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(newFile(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 = newFileWriter(filePath);72 bw = newBufferedWriter(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 voidpropertiesChange(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(newFile(inputPath));104 br = new BufferedReader(fr); //扩容,类似加水管
105 fw = newFileWriter(outputPath);106 bw = newBufferedWriter(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 }