当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Java实现文本文件批量替换小程序
发布时间:2010/8/23 11:04:13 来源:城市学习网 编辑:ziteng
  由于有个web项目的字符集编码原本使用gb2312,现在想改为utf-8编码,项目下有很多的html,手动去修改相当麻烦,比较懒,于是就写了如下的java程序对html文件中的charset=gb2312进行替换,替换为 charset=utf-8。(注:Dreamweaver 可以批量替换)
  代码如下:
  import java.io.BufferedReader;
  import java.io.BufferedWriter;
  import java.io.File;
  import java.io.FileFilter;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.OutputStreamWriter;
  import java.io.PrintWriter;
  import java.io.UnsupportedEncodingException;
  public class ContextReplace {
  private static String srcStr = "charset=gb2312";
  private static String desStr = "charset=utf-8";
  private static String srcDir = "f:\\test";
  private static FileFilter filter = new FileFilter() {
  public boolean accept(File pathname) {
  // 只处理:目录 或是 .html文件
  if (pathname.isDirectory()
  || (pathname.isFile() && pathname.getName().endsWith(
  ".html"))) {
  return true;
  } else {
  return false;
  }
  }
  };[NextPage]  public static void readDir(File file) {
  // 以过滤器作为参数
  File[] files = file.listFiles(filter);
  for (File subFile : files) {
  // 处理目录
  if (subFile.isDirectory()) {
  readDir(subFile);
  }
  // 处理文件
  else {
  System.err.println(" 源文件:\t" + subFile.getAbsolutePath());
  System.err.println("---------------------------");
  try {
  replace(subFile.getAbsolutePath(), srcStr, desStr);
  } catch (UnsupportedEncodingException e) {
  e.printStackTrace();
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  }
  }
[NextPage]   public static void replace(String infilename, String from, String to)
  throws IOException, UnsupportedEncodingException {
  File infile = new File(infilename);
  BufferedReader in = new BufferedReader(new InputStreamReader(
  new FileInputStream(infile), "utf-8"));
  File outfile = new File(infile + ".tmp");
  PrintWriter out = new PrintWriter(new BufferedWriter(
  new OutputStreamWriter(new FileOutputStream(outfile), "utf-8")));
  String reading;
  while ((reading = in.readLine()) != null) {
  out.println(reading.replaceAll(from, to));
  }
  out.close();
  in.close();
  infile.delete();
  outfile.renameTo(infile);
  }
  public static void main(String[] args) {
  File srcFile = new File(srcDir);
  readDir(srcFile);
  srcFile = null;
  }
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved