博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java读取文件夹下所有文件并替换文件每一行中指定的字符串
阅读量:4552 次
发布时间:2019-06-08

本文共 6229 字,大约阅读时间需要 20 分钟。

【轉載】https://www.cnblogs.com/snake-hand/p/3157260.html

import java.io.BufferedReader;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class ChangeFile {

public static void main(String[] args) {
try {
BufferedReader bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("D:/EntNatureDistributionDAO.txt"))));//数据流读取文件

StringBuffer strBuffer = new StringBuffer();        String empty = "";        String tihuan = "";        for (String temp = null; (temp = bufReader.readLine()) != null; temp = null) {            if(temp.indexOf("/*") != -1 && temp.indexOf("*/") != -1){ //判断当前行是否存在想要替换掉的字符 -1表示存在                tihuan = temp.substring(0, 10);                temp = temp.replace(tihuan, empty);//替换为你想要的东东            }            strBuffer.append(temp);            strBuffer.append(System.getProperty("line.separator"));//行与行之间的分割        }        bufReader.close();        PrintWriter printWriter = new PrintWriter("E:/EntNatureDistributionDAO.txt");//替换后输出的文件位置        printWriter.write(strBuffer.toString().toCharArray());        printWriter.flush();        printWriter.close();    } catch (IOException e) {        e.printStackTrace();    }}

}

适用:如服务器崩溃 导致文件丢失,还原后类文件在每一行的开头都加了很多注释(如下)

/* / package com.itown.iesap.starquery.dao;

/ /
/
/ import com.itown.framework.impl.ThreadContext;
/
*/ import com.itown.framework.persistence.AbstractDao;
.........很多很多.....

替换之后就是这样的:

package com.itown.iesap.starquery.dao;

import com.itown.framework.impl.ThreadContext;

import com.itown.framework.persistence.AbstractDao;
.........很多很多......

如果你又成百上千个这样的文件替换那就要读取文件夹下的所有文件:

import java.io.BufferedReader;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class ChangeFile {

public static void main(String[] args) {
try {
//读取指定文件夹下的所有文件
String filepath = "D:/AOE/abc/";//给我你的目录文件夹路径
File file = new File(filepath);
if (!file.isDirectory()) {
System.out.println("---------- 该文件不是一个目录文件 ----------");
} else if (file.isDirectory()) {
System.out.println("---------- 很好,这是一个目录文件夹 ----------");
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\" + filelist[i]);
//String path = readfile.getPath();//文件路径
String absolutepath = readfile.getAbsolutePath();//文件的绝对路径
String filename = readfile.getName();//读到的文件名
开始挨个的读取文件
BufferedReader bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(absolutepath)));//数据流读取文件
StringBuffer strBuffer = new StringBuffer();
String empty = "";
String tihuan = "";
for (String temp = null; (temp = bufReader.readLine()) != null; temp = null) {
if(temp.indexOf("/") != -1 && temp.indexOf("/") != -1){ //判断当前行是否存在想要替换掉的字符 -1表示存在
tihuan = temp.substring(0, 9);//这里截取多长自己改
temp = temp.replace(tihuan, empty);//替换为你想要的东东
}
strBuffer.append(temp);
strBuffer.append(System.getProperty("line.separator"));//行与行之间的分割
}
bufReader.close();
PrintWriter printWriter = new PrintWriter("E:/ttt/"+filename);//替换后输出的文件位置(切记这里的E:/ttt 在你的本地必须有这个文件夹)
printWriter.write(strBuffer.toString().toCharArray());
printWriter.flush();
printWriter.close();
System.out.println("ok 第 " + (i+1) +" 个文件操作成功!");
读取兵输出一个文件结束
}
System.out.println("---------- 所有文件操作完毕 ----------");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

这样更加清晰明了些:

import java.io.BufferedReader;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class ReadFile {

/** * 主方法测试 * @param args  * @author 杜文俊 * @update 2013-6-26 下午1:36:31 */public static void main(String[] args) {    String filePath = "D:/AOE/abc/"; //给我你要读取的文件夹路径    File outPath = new File("E:/AOE/abc/"); //随便给一个输出文件夹的路径(不存在也可以)    readFolder(filePath,outPath);}/** * 读取文件夹 * @return  */public static void readFolder(String filePath,File outPath){    try {        //读取指定文件夹下的所有文件        File file = new File(filePath);        if (!file.isDirectory()) {            System.out.println("---------- 该文件不是一个目录文件 ----------");        } else if (file.isDirectory()) {            System.out.println("---------- 很好,这是一个目录文件夹 ----------");            String[] filelist = file.list();            for (int i = 0; i < filelist.length; i++) {                File readfile = new File(filePath + "\\" + filelist[i]);                //String path = readfile.getPath();//文件路径                String absolutepath = readfile.getAbsolutePath();//文件的绝对路径                String filename = readfile.getName();//读到的文件名                readFile(absolutepath,filename,i,outPath);//调用 readFile 方法读取文件夹下所有文件            }            System.out.println("---------- 所有文件操作完毕 ----------");        }    } catch (Exception e) {        e.printStackTrace();    }}/** * 读取文件夹下的文件 * @return  */public static void readFile(String absolutepath,String filename,int index,File outPath){    try{        BufferedReader bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(absolutepath)));//数据流读取文件        StringBuffer strBuffer = new StringBuffer();        String empty = "";        String tihuan = "";        for (String temp = null; (temp = bufReader.readLine()) != null; temp = null) {            if(temp.indexOf("/*") != -1 && temp.indexOf("*/") != -1){ //判断当前行是否存在想要替换掉的字符 -1表示存在                tihuan = temp.substring(0, 9);//这里截取多长自己改                temp = temp.replace(tihuan, empty);//替换为你想要的东东            }            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);//替换后输出的文件位置(切记这里的E:/ttt 在你的本地必须有这个文件夹)        printWriter.write(strBuffer.toString().toCharArray());        printWriter.flush();        printWriter.close();        System.out.println("第 " + (index+1) +" 个文件   "+ absolutepath +"  已成功输出到    " +outPath+"\\"+filename);    }catch(Exception e){        e.printStackTrace();    }}

}

转载于:https://www.cnblogs.com/Andrew520/p/8196524.html

你可能感兴趣的文章
Windows Phone 自定义弹出框和 Toast 通知
查看>>
如何生成静态页面的五种方案
查看>>
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
Ubuntu 14.04 更新源
查看>>
kafka生产者与消费者
查看>>
单元测试框架"艾信.NET单元测试工具(AssionUnit)"开发---第二步
查看>>
git 项目最常用命令总结
查看>>
[Arduino] 在串口读取多个字符串,并且转换为数字数组
查看>>
redis-window 集群配置
查看>>
4.1.6 Grundy数-硬币游戏2
查看>>
图像处理的软件
查看>>
Sql 2000系统表 语句查询表结构
查看>>
[CentOS_7.4]Linux编译安装ffmpeg
查看>>
大数据存储平台之异构存储实践深度解读
查看>>
1.2 Stream API
查看>>
Less2css error 终极解决方案
查看>>
DNS服务器的原理
查看>>
django_数据库操作—增、删、改、查
查看>>