应用场景:比方有一个深层次的文件目录结构,如:javaAPI

每一个文件中面都有同样的内容,而我们要统一改动为其它内容。上千个文件假设一个个改动显得太不明智。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter; public class Test {
/**
* @author itmyhome
*/
public static void main(String[] args) {
File f = new File("F:/javaAPI/java/lang/reflect");
print(f, 0);
} /**
* 遍历目录
*
* @param f
* @param len
*/
public static void print(File f, int len) {
File[] file = f.listFiles(); for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory()) { //推断是否目录
print(file[i], len + 1);
} // 为防止输出文件覆盖源文件,所以更改输出盘路径 也可自行设置其它路径
File outPath = new File(file[i].getParent().replace("F:", "E:"));
File readfile = new File(file[i].getAbsolutePath()); if (!readfile.isDirectory()) {
String filename = readfile.getName(); // 读到的文件名称
String absolutepath = readfile.getAbsolutePath(); // 文件的绝对路径
readFile(absolutepath, filename, i, outPath); // 调用 readFile
}
}
} /**
* 读取目录下的文件
*
* @return
*/
public static void readFile(String absolutepath, String filename,
int index, File outPath) {
try {
BufferedReader bufReader = new BufferedReader(new InputStreamReader(
new FileInputStream(absolutepath), "gb2312")); // 数据流读取文件 StringBuffer strBuffer = new StringBuffer();
String newStr = "i love you too";
String oldStr = "i love you"; for (String temp = null; (temp = bufReader.readLine()) != null;
temp = null) {
if ((temp.indexOf(oldStr) != -1) &&
(temp.indexOf(oldStr) != -1)) { // 推断当前行是否存在想要替换掉的字符
temp = temp.replace(oldStr, newStr); // 此处进行替换
} strBuffer.append(temp);
strBuffer.append(System.getProperty("line.separator")); // 换行符
} bufReader.close(); if (outPath.exists() == false) { // 检查输出目录是否存在,若不存在先创建
outPath.mkdirs();
System.out.println("已成功创建输出目录:" + outPath);
} PrintWriter printWriter = new PrintWriter(outPath + "\\" +
filename, "gb2312"); // 替换后输出文件路径
printWriter.write(strBuffer.toString().toCharArray()); //又一次写入
printWriter.flush();
printWriter.close();
System.out.println("第 " + (index + 1) + " 个文件 " + absolutepath +
" 已成功输出到 " + outPath + "\\" + filename);
} catch (Exception e) {
e.printStackTrace();
}
}
}

作者:itmyhome

Java遍历目录下全部文件并替换指定字符串的更多相关文章

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

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

  2. Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例

    遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例: #-*- encoding: utf-8 -*- __author__ = 'liudong' import linecache,sys ...

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

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

  4. Linux和Windows的遍历目录下所有文件的方法对比

    首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...

  5. linux替换目录下所有文件中的某字符串

    linux替换目录下所有文件中的某字符串 比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g&quo ...

  6. PHP遍历目录下的文件夹和文件 以及遍历文件下内容

    1.遍历目录下的文件夹和文件: public function bianli1($dir) { $files = array(); if($head = opendir($dir)) { while( ...

  7. PHP删除目录及目录下所有文件或删除指定文件

    PHP删除目录及目录下所有文件或删除指定文件 <?php header("content-type:text/html;charset=utf-8"); /** * 删除目录 ...

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

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

  9. shell编程--遍历目录下的文件

    假定目录text下有如下文件      目录:dir_1.dir_2.dir_3 文件:text_1.text_2 遍历目录下所有的文件是目录还是文件 if -- if类型: #!bin/sh for ...

随机推荐

  1. Linux 中常用的基础命令一

    1.目录相关命令的使用  pwd(printing working directory) 显示当前工作目录    pwd命令相关的环境变量:     PWD  保存了当前工作目录路径     OLDP ...

  2. Python学习七步走

    在周五的下午三点钟(为什么是这个时间?因为事情总会在周五下午三点钟发生),你收到一条通知,客户发现你的软件出现一个错误.在有了初步的怀疑后,你联系运维,查看你的软件日志以了解发生了什么,因为你记得收到 ...

  3. 20180929 北京大学 人工智能实践:Tensorflow笔记07

    (完)

  4. ORA-01555错误总结(二)

    这篇文章紧接着上一篇"ORA-01555错误总结(一)".主要描写叙述延迟块清除导致的ORA-01555错误. 以下是一些简介(上一遍已经介绍过) ORA-01555错误是一种在o ...

  5. orm 通用方法——DeleteModel 主键删除

    定义代码: /** * 描述:删除对象 * 作者:Tianqi * 日期:2014-09-17 * param:model 对象实例,包含主键 * return:int 受影响行数 * return: ...

  6. java实习生的成长之路<转>

    首先初识语法的阶段,必须要学会怎么操作对象,操作if和for,操作list set map,然后是线程.IO和jdbc什么的,其余的,若是一时不理解,可以后边需要时再学. 这阶段完了,你可以写些能在控 ...

  7. windows 手动添加服务

    windows 手动添加服务方法一:修改注册表 在注册表编辑器,展开分支"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" ...

  8. thinkserer TD350 系统损坏后,数据恢复及系统重做过程

    电脑配置: 联想服务器 TD350   E5-2609V4 2*8G 2*4T+R1 塔式 单电 1.系统恢复: 试过很多种方法,均无效 2.数据恢复:  重新安装系统后,直接在D盘查找 , 原C盘的 ...

  9. QQ空间说说爬虫

    QQ空间说说爬虫 闲来无事,写了一个QQ空间的爬虫,主要是爬取以前的说说,然后生成词云. 这次采用的主要模块是selenium,这是一个模拟浏览器的模块,一开始我不想用这个模块写的,但是后面分析的时候 ...

  10. Swift学习笔记(5)--数组

    数组的下标从0开始计数,相关方法属性涉及到下标时也从0开始计数 1.定义: //1.可变数组 var cityArray = ["Portland","San Franc ...