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 }
时间: 2024-10-09 05:03:35

Java之扫描目录,修改文件内容的相关文章

java修改文件内容

文件的读和写,大家都不陌生,但是修改呢?按照普通的读写流去修改的话,只能全部读取出来,在内存中修改好后,全部写进去,这样对于文件内容过多的时,性能很低. 最近在遇到这个问题的时候,发现RandomAccessFile这个类正好能解决我的问题,废话不多说,下面直接贴代码,分享给大家,有不对的地方欢迎指教,谢谢 /**     * 修改文件内容     * @param fileName     * @param oldstr     * @param newStr     * @return  

[转载]sed实现直接修改文件内容

sed实现直接修改文件内容 sed是实现对流的编辑.通常,我们使用sed可以实现内容的编辑后然后保存成另外的一个文件,如果正确的话,才写入到源文件.但是某些时候,我们需要直接修改文件,因为,保存文件到一个文件,然后再覆盖原文件的办法显得很麻烦.其实很简单,只需要一个 -i 参数就可以了.比如,我想替换文件中的 properties 为 property ,可以使用 sed  's/properties/property/g'  build.xml这种方式,其实并没有修改build.xml文件的内

python修改文件内容,不需要read,write多个动作。

python  要修改文件内容,常用 是先read,后write , 再 rename,很不爽. 比如:需要 把       yuv_dir ="../HD/"   # "H:/HD_Master/1080i25/" 改为       yuv_dir ="C:/HD/"   # "H:/HD_Master/1080i25/" 很简单,但实际不好操作,因为read后文件指针就到后一行了,要使用seek到前一行等,很不好. 很多应

linux下C++修改文件内容

C fwrite在任意位置写入文件,并可修改文件内容 想实现类似迅雷那样下载时可以从文件半中间写入的功能 1 #include<stdio.h> 2 int main() 3 { 4 FILE *fp; 5 fp=fopen("overwrite.bin","rb+"); //使用rb+模式,可以往半中间插入数据,而且是覆盖插入,若使用"ab+"每次都插入到最后面,调用fseek也没用 6 if(NULL != fp) 7 { 8 i

java移动文件夹、 慎用java file.renameTo(f)方法 、 java从一个目录复制文件到另一个目录下 、 java代码完成删除文件、文件夹 、

java移动文件夹(包含子文件和子文件夹): http://blog.csdn.net/yongh701/article/details/45070353 慎用java    file.renameTo(f)方法: http://www.cnblogs.com/mrwangblog/p/3934506.html 注意看结果,从C盘到E盘失败了,从C盘到D盘成功了.因为我的电脑C.D两个盘是NTFS格式的,而E盘是FAT32格式的.所以从C到E就是上面文章所说的"file systems"

python 修改文件内容

python 修改文件内容 一.修改原文件方式 1 def alter(file,old_str,new_str): 2 """ 3 替换文件中的字符串 4 :param file:文件名 5 :param old_str:就字符串 6 :param new_str:新字符串 7 :return: 8 """ 9 file_data = "" 10 with open(file, "r", encoding

python 文件操作(二) 替换性修改文件内容

正常情况我们想要仅对文件某一行的内容进行修改,而不改变其他内容,在原文件的基础上不能修改,因为当我们对原文件进行写操作时,如果原文件里面有内容,就会清空,在这种情况下,只能对文件进行替换性修改:即重新创建一个文件,把原文件的内容按行复制到新文件里,当复制到要修改的那一行时,就用我们需要的内容来替换原有的内容 eg:我们要修改原文件的第五行内容为"hello,小双双",实现源码如下: # 替换性修改文件内容 f_read = open('小双双', 'r', encoding='utf8

JAVA利用poi获取world文件内容

本文主要简单介绍了利用poi包,读取world文件内容. 这个依然存在版本的问题,只能读取doc结尾的老版本文件. 话不多说,上代码: 1 import java.io.File; 2 import java.io.FileInputStream; 3 4 import org.apache.poi.hwpf.HWPFDocument; 5 import org.apache.poi.hwpf.usermodel.Range; 6 7 8 public class testdoc { 9 /**

python 修改文件内容的程序

#1.修改文件的内容 #运行的时候要 python xxx.py hh.txt hehe hahaimport sys,osinputs = sys.argv#存的是所有运行时候传进来的参数#它就是用来获取在用python命令运行python文件的时候,传入的参数#1.判断用户输入的是不是够个数if len(inputs)<4: print('参数不够,至少需要3个参数,e.g: python xx.py xx.txt old_str new_str..')else: file_name = i