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

 package org.utils.tools.fileoper;

 import java.io.*;
import java.util.ArrayList;
import java.util.List; /*
* 修改文件中的内容
* 替换properties文件中的ip
* */
public class EditFile {
public static void main(String args[]) {
// String inputPath = "C:\\workspace\\hbase_test\\src\\main\\resource\\properties\\case_01.properties";
// String outputPath = "C:\\workspace\\hbase_test\\src\\main\\resource\\properties\\case_out.properties"; String srcStr = "bd.test.com"; //需要替换的字符串
String desStr = "10.15.100.25"; //用于替换的字符串
// 文件目录,不扫子目录
String dirPath = "C:\\workspace\\work\\bdd-bd-test\\" +
"src\\test\\resources\\properties\\case\\tunny\\001"; File f = new File(dirPath);
String wholeFilePath;
String[] fileNames = f.list();
for (String s : fileNames) {
wholeFilePath = dirPath + "\\" + s;
System.out.println("处理文件:" + wholeFilePath);
propertiesChange(wholeFilePath, 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();
}
}
} /*
* 读取文件并修改指定内容,复制到另一个文件中
* */
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之修改文件内容:字符串逐行替换

    依赖包: <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</a ...

  2. java修改文件内容

    文件的读和写,大家都不陌生,但是修改呢?按照普通的读写流去修改的话,只能全部读取出来,在内存中修改好后,全部写进去,这样对于文件内容过多的时,性能很低. 最近在遇到这个问题的时候,发现RandomAc ...

  3. Web 在线文件管理器学习笔记与总结(5)修改文件内容

    ① 读出要修改的文件的内容 ② 进行修改 ③ 将修改后的内容写进文件 index.php: <?php require 'dir.func.php'; require 'file.func.ph ...

  4. python笔记(三)---文件读写、修改文件内容、处理json、函数

    文件读写(一) #r 只读,打开文件不存在的话,会报错 #w 只写,会清空原来文件的内容 #a 追加写,不会请求,打开的文件不存在的话,也会帮你新建的一个文件 print(f.read()) #获取到 ...

  5. linux下C++修改文件内容

    C fwrite在任意位置写入文件,并可修改文件内容 想实现类似迅雷那样下载时可以从文件半中间写入的功能 #include<stdio.h> int main() { FILE *fp; ...

  6. python 修改文件内容

    python 修改文件内容 一.修改原文件方式 1 def alter(file,old_str,new_str): 2 """ 3 替换文件中的字符串 4 :param ...

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

    正常情况我们想要仅对文件某一行的内容进行修改,而不改变其他内容,在原文件的基础上不能修改,因为当我们对原文件进行写操作时,如果原文件里面有内容,就会清空,在这种情况下,只能对文件进行替换性修改:即重新 ...

  8. Python修改文件内容

    工作中要写个脚本来修改文件的内容,然后就写了一个刷子: #coding:utf8 import os def modify_file(old_file, new_version, old_versio ...

  9. shell编程系列12--文本处理三剑客之sed利用sed修改文件内容

    shell编程系列12--文本处理三剑客之sed利用sed修改文件内容 修改命令对照表 编辑命令 1s/old/new/ 替换第1行内容old为new ,10s/old/new/ 替换第1行到10行的 ...

随机推荐

  1. OpenCV——Mat类的创建、复制、函数

    Mat类的创建: 方法一: 通过读入一张图像,直接转换为Mat对象 Mat image = imread("test.jpg"); 其中 imread()方法需要传入String类 ...

  2. 几个简单易懂的排序算法php

    几个简单易懂的排序算法.排序算法,在应用到解决实际问题的时候(由于不一定总是数字排序),重点要分析出什么时候该交换位置. <?php // 冒泡排序 function bubble_sort(a ...

  3. .NetCore Session.Redis (转载)

    首先创建ASP.NET CORE Web项目,然后按如下顺序操作. 1.添加nuget程序包: Microsoft.AspNetCore.Session; Microsoft.AspNetCore.D ...

  4. 【LeeCode23】Merge k Sorted Lists★★★

    1.题目描述: 2.解题思路: 题意:将K个已经排序的链表合并成一个排序的链表,分析并描述所用算法的复杂度. 方法一:基于“二分”思想的归并排序.本文用非递归和递归两种方法实现. (1)非递归:归并排 ...

  5. Python算法基础

    一.简介 定义和特征 定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时 ...

  6. 20155209林虹宇 Exp6 信息搜集与漏洞扫描

    Exp6 信息搜集与漏洞扫描 1.信息收集 1.1通过DNS和IP挖掘目标网站的信息 whois查询 进行whois查询时去掉www等前缀,因为注册域名时通常会注册一个上层域名,子域名由自身的域名服务 ...

  7. 20155210 实验一 逆向与Bof基础

    20155210 实验一 逆向与Bof基础 实验内容 1.直接修改程序机器指令,改变程序执行流程 下载目标文件pwn1,反汇编 利用objdump -d pwn1对pwn1进行反汇编 得到: 8048 ...

  8. 2017-2018 Exp3 MAL_免杀原理与实践 20155214

    目录 Exp3 MAL_免杀原理与实践 实验内容 对msf生成后门程序的检测 Veil-Evasion应用 Visual Studio2017 + shellcode生成后门 主要思路 知识点 最后的 ...

  9. sonarqube扫描安卓代码

    代码才用https://github.com/liwanlei/bilibili-android-client 配置: build.gralde配置 buildscript { repositorie ...

  10. CommandoVM-虚拟机映像文件 | VM打开直接用

    呵呵!自从火眼发布了这个CommandoVM,想必大家应该都挺激动,然而实际操作一下,基本炸裂-- 因为并没有给类似于kali这种直接安装的现成镜像,而是要通过github的脚本去完全网络安装 实际操 ...