EditProperties.java

 package PropertiesOperation.Edit;

 import java.io.File;

 /**
* 替换指定Porpoerties文件中的指定内容
* 三个参数:
* filePath:存放properties文件的目录
* srcStr:需要替换的字符串
* desStr:用于替换的字符串
* */
public class EditProperties {
private static int num = 0; // 计数变量
public static void main(String[] args) {
String filePath = "C:\\workspace\\work\\ShanDianDaiTools\\src\\main\\" +
"resource\\接口测试\\app启动次数统计接口";
String srcStr = "bd.test.com:8888"; //需要替换的字符串
String desStr = "10.15.1.200:8580"; //用于替换的字符串 editProperties(filePath, srcStr, desStr);
System.out.println("总共文件数:" + num);
} public static void editProperties(String filePath, String srcStr, String desStr) {
File file = new File(filePath);
// 处理目录情况
if (file.isDirectory()) {
File[] subFiles = file.listFiles();
for (File subFile : subFiles) {
// 子文件如果是目录进行递归
if (subFile.isDirectory()) {
editProperties(subFile.getAbsolutePath(), srcStr, desStr);
} else {
// 子文件如果是文件,通过后缀名进行过滤
if (subFile.getName().endsWith(".properties")) {
System.out.println(subFile.getAbsolutePath());
EditFile.propertiesChange(subFile.getAbsolutePath(), srcStr, desStr);
num++;
} else {
continue;
}
}
}
} else {
// 处理单个文件情况
if (file.getName().endsWith(".properties")) {
System.out.println(file.getAbsolutePath());
EditFile.propertiesChange(file.getAbsolutePath(), srcStr, desStr);
num++;
}
}
}
}

EditFile.java

 package PropertiesOperation.Edit;

 import java.io.*;
import java.util.ArrayList;
import java.util.List; /**
* 修改文件中的内容* 两种情况:1.修改文件中的指定内容;2.读取文件并修改指定内容,复制到另一个文件中
* 场景举例:替换properties文件中的ip和端口
*/
public class EditFile {
/**
* 1.修改文件中的指定内容
* filePath:文件路径
* srcStr:需要替换的字符串
* desStr:替换成的字符串
*/
public static void propertiesChange(String filePath, String srcStr, String desStr) {
//字符流
FileReader fr = null;
FileWriter fw = null;
//缓冲流
BufferedReader br = null;
BufferedWriter bw = null; List list = new ArrayList<>();
//读取文件内容保证在list中
try {
fr = new FileReader(new File(filePath));
br = new BufferedReader(fr); //扩容,类似加水管
String line = br.readLine(); //逐行复制
while (line != null) {
//修改指定内容
if (line.contains(srcStr)) {
line = line.replace(srcStr, desStr);
}
list.add(line);
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭流,顺序与打开相反
br.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
} //将list中内容输出到原文件中
try {
fw = new FileWriter(filePath);
bw = new BufferedWriter(fw);
for (Object s : list) {
bw.write((String) s);
bw.newLine(); //换行输出
}
System.out.println("文件修改成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭流,顺序与打开相反
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /**
* 2.读取文件并修改指定内容,复制到另一个文件中
* inputPath:修改的源文件
* outputPath:修改后输出的文件路径
* srcStr:需要替换的字符串
* desStr:替换成的字符串
*/
public static void propertiesChange(String inputPath, String outputPath, String srcStr, String desStr) {
//字符流
FileReader fr = null;
FileWriter fw = null;
//缓冲流
BufferedReader br = null;
BufferedWriter bw = null; try {
fr = new FileReader(new File(inputPath));
br = new BufferedReader(fr); //扩容,类似加水管
fw = new FileWriter(outputPath);
bw = new BufferedWriter(fw); String line = br.readLine(); //逐行复制
while (line != null) {
if (line.contains(srcStr)) {
line = line.replace(srcStr, desStr);
}
bw.write(line);
bw.newLine(); //换行输出
line = br.readLine();
}
System.out.println("文件修改成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭流,顺序与打开相反
bw.close();
br.close();
fw.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

Java之递归遍历目录,修改指定文件的指定内容的更多相关文章

  1. Java 之递归遍历目录

    Java 之递归遍历目录 一.内容 输出指定目录(文件夹)下的所有文件(包括目录)的绝对路径 二.源代码:RecursiveListDirectory.java package cn.com.zfc. ...

  2. (实用篇)PHP不用递归遍历目录下所有文件的代码

    <?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ fu ...

  3. Python递归遍历目录下所有文件

    #自定义函数: import ospath="D:\\Temp_del\\a"def gci (path): """this is a stateme ...

  4. C# 不使用递归遍历目录树中的文件和文件夹

    public class StackBasedIteration { static void Main(string[] args) { // Specify the starting folder ...

  5. Java递归列出目录下全部文件

    Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...

  6. Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

    题目: 遍历出aaa文件夹下的文件 首先分析思路: 1.首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件. 2.然后通过isDirectory判断是否为目录. 3.如果是目录就 ...

  7. Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】

    File(文件)类 File类用于封装一个路径,该路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径 File类内部封装的路径可以指向一个文件,也可以指向一个目录,在使用File ...

  8. Linux下文件及目录的一些操作(附递归遍历目录源码)

    1.获取当前工作目录 #include <unistd.h> 1.char *getcwd(char *buf,size_t size); 2. 3.其中,buf为缓冲区地址,size为给 ...

  9. 牛客网:java入门实现遍历目录

    项目介绍 遍历目录是操作文件时的一个常见需求.比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录.该项目教会你如何使用流式编程和lambda表达式,帮助你进一步熟悉java8 ...

随机推荐

  1. OpenCV——图像的载入、显示、输出到文件和滑动条、鼠标操作

    图像的载入.显示.输出到文件和滑动条 滑动条 示例: 鼠标操作

  2. JAVA框架Struts2(二)

    一:Struts2执行流程: 1)编写页面,点击超链接,请求提交到服务器端. 2)请求先经过Struts2核心过滤器(StrutsprepareAndexectuterfilter). 3)过滤器的功 ...

  3. Mac OS 上配置java开发环境

    在开始本学期的java课程前,我需要先为自己的电脑配置好Java的开发环境.由于电脑是mac操作系统,所以教材上的教程对我并不管用,于是乎开始动手自己查阅网上资料来解决. 1.安装JDK 1.访问Or ...

  4. css 常用单位

    em: 相对于应用在当前元素的字体尺寸,1em 等于当前的字体尺寸,2em 等于当前字体尺寸的两倍,一般浏览器字体大小默认为16px,则2em == 32px: W3原文:font size of t ...

  5. scapy学习笔记(5)

    1.ACK Scan >>>ans,unans=sr(IP(dst=,],flags="A") 扫描后,若要找出未过虑的端口: for s,r in ans: i ...

  6. FFMpeg笔记(七) 代码结构分析,以HLS为例

    HLS流在播放时是先解协议(hls.c)后解封装(mpegts.c),libavformat下的hls.c和mpegts.c实际上是同一个级别的,同属于demuxer. 一.解HLS协议 1. FFm ...

  7. day33

    今日内容: 1.关于UDP传输的模拟实现 2.使用socketserver模块实现TCP传输的并发操作 3.进程理论的介绍 1.关于UDP传输的模拟实现 模拟UDP传输与之前的模拟TCP传输大致相同 ...

  8. jqgrid 对编辑行填写的内容做格式验证

    有时,我们需要在基于jqgrid表格编辑行的单元格做规范验证.jqgrid提供有支持,通过设置字段的editrules属性来约束格式. 约束方式: 1.内置的约束参数 (required: true, ...

  9. 《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告

    <基于Cortex-M4的ucOS-III的应用>课程设计 结题报告 小组成员姓名:20155211 解雪莹 20155217 杨笛 20155227 辜彦霖 指导教师:娄嘉鹏 一.设计方 ...

  10. Java技术——String类为什么是不可变的

    0. 前言   如果一个对象,在它创建完成之后不能再改变它的状态,包括对象内的成员变量.基本数据类型的值等等.那么这个对象就是不可变的.众所周知String类就是不可变的.转载请注明出处为SEU_Ca ...