java 替换内容

package yuanlai.photostorage;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
/**
 * 替换文件中的特定字符
 * 
 * @author luoqinglong
 * @date 2015-9-2
 *
 */
public class ReplacePackage {
 public static final String[] targetFileSuffixArray = {"java","txt","xml","properties"};//需要替换的文件后缀
//http://blog.csdn.net/hapylong/article/details/4594130
 /**
  * @param args
  */
 public static void main(String[] args) {
  getAllFiles("D:\\MyEclipse\\tinder-services\\web");
 }
 /**
  *
  * @param filePath 要替换的目录或者文件
  */
 public static void getAllFiles(String filePath) {
  File root = new File(filePath);
  File[] files = root.listFiles();
  
  if(root.isDirectory()&&files.length==0){
   return ;
  }
  if(files==null||files.length==0){
     files = new File[1];
     files[0] = root;
  }
  for (File file : files) {
   if (file.isDirectory()) {
    System.out.println("显示" + filePath + "下所有文件" + file.getAbsolutePath());
    getAllFiles(file.getAbsolutePath());
   } else {
    //判断是不是目标文件
    boolean targetFile = false;
    for(int i=0;i<targetFileSuffixArray.length;i++){
     if(file.getName().endsWith(targetFileSuffixArray[i])){
      targetFile = true;
      break;
     }
    }
    if(targetFile){
     System.out.println("显示" + filePath + "下所有文件" + file.getAbsolutePath());
     try {
      replaceContent(file,"com.yuanlai.tinder","com.yuanlai.coffee");
     } catch (IOException e) {
      e.printStackTrace();
     }
    }
    
   }
  }
 }

 /**
  * 把文件中旧的字符串替换成新的字符串
  *
  * @param srcFile
  * @param oldStr
  *            旧的字符串
  * @param newStr
  *            新的字符串
  * @throws IOException
  */
 public static void replaceContent(File srcFile, String oldStr, String newStr) throws IOException {
  File newFile = new File(srcFile.getAbsolutePath()+".bak");
  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile)));
  BufferedWriter writer = new BufferedWriter(new FileWriter(newFile));
  String str ;
  while ((str = bufferedReader.readLine()) != null) {
   writer.write(str.replaceAll(oldStr, newStr));
   writer.newLine();
  }
  String string = srcFile.getAbsolutePath();
  bufferedReader.close();
  srcFile.delete();
  writer.flush();
  writer.close();
  newFile.renameTo(new File(string));
 }
}

你可能感兴趣的:(java 替换内容)