替换Java文件的utf-8 BOM
2011-03-28 14:25
330 查看
eclipse会给utf-8文件加一个3个字节BOM头,大部分文本工具能够正常处理,但是ant等工具无法正常编译代码,下面这段代码用于替换掉utf-8 BOM头:
package org.sl.util; import java.io.File; /** * 用空格替换Java文件utf-8 bom头 * @author shanl * */ public class ReplaceUtf8BOM { public static void main(String[] args){ if(args.length == 0){ help(); return; } if("-d".equalsIgnoreCase(args[0])){ System.out.println("已替换指定目录:'"+args[1]+"'下所有.java文件的utf-8 BOM头"); removeDirectoryUtf8BOM(args[1]); return; } if("-f".equalsIgnoreCase(args[0])){ System.out.println("已替换指定文件:'" + args[1] + "'utf-8 BOM头"); removeFileUtf8BOM(args[1]); return; } System.out.println("错误的参数:" + args[0]); help(); } static void help(){ System.out.println("ReplaceUtf8BOM -d <目录名>|-f <文件名>"); System.out.println("-d <目录名>:遍历删除整个目录的.java文件的utf-8 BOM头"); System.out.println("-f <文件名>:删除指定.java文件的utf-8 BOM头"); } static void removeFileUtf8BOM(String fileStr){ File file = null; file = new File(fileStr); removeFileUtf8BOM(file); } static void removeFileUtf8BOM(File file){ Utf8BOMHelper.replaceUtf8BOM(file); } static void removeDirectoryUtf8BOM(String dirStr){ File dir = null; File[] files = null; dir = new File(dirStr); files = dir.listFiles(new JavaFileFilter()); if(null != files && 0 != files.length){ for(File f:files){ if(f.isDirectory()){ removeDirectoryUtf8BOM(f.getAbsolutePath()); }else{ removeFileUtf8BOM(f); } } } } }
package org.sl.util; import java.io.File; import java.io.RandomAccessFile; class Utf8BOMHelper { /** * 用空格替换掉指定文件的UTF-8 BOM头(前3个字节) * @param file */ public static void replaceUtf8BOM(File file){ RandomAccessFile accessFile = null; byte[] utf8Bom = new byte[3]; int readSize = 0; if(null == file){ return ; } try{ accessFile = new RandomAccessFile(file, "rw"); readSize = accessFile.read(utf8Bom); if(0 >= readSize){ return; } if(-17 == utf8Bom[0] && -69 == utf8Bom[1] && -65 ==utf8Bom[2]){ accessFile.seek(0); accessFile.write(new byte[]{ ' ',' ',' ' }); } }catch(Exception ex){ ex.printStackTrace(); }finally{ try{ if(null != accessFile) accessFile.close(); }catch(Exception ex){ } } } }
package org.sl.util; import java.io.File; import java.io.FileFilter; /** * 用来过滤非.java文件 * @author kfbsl * */ class JavaFileFilter implements FileFilter{ //如果文件扩展名为:.java public boolean accept(File dir, String name) { if(null == name || "".equals(name)){ return false; } return name.toUpperCase().endsWith(".JAVA"); } public boolean accept(File pathname) { if(pathname.isDirectory()){ return true; } String fileName = pathname.getName(); return accept(null, fileName); } }
相关文章推荐
- UTF-8格式编码与UTF-8无BOM格式编码的区别(包括java文件)
- Java正确判别出文件的字符集(尤其是带BOM和不带BOM的UTF-8字符)
- JAVA输出带BOM的UTF-8编码的文件
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读带有BOM的UTF-8文件乱码
- Java对UTF-8格式文件的读取、写入及添加BOM头处理
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读带有BOM的UTF-8文件乱码 推荐
- Java读带有BOM的UTF-8文件乱码原因及解决方法
- UTF-8格式编码与UTF-8无BOM格式编码的区别(包括java文件)
- JAVA输出带BOM的UTF-8编码的文件
- Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式文件第一行出现乱码——问号“?”及解决 And Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
- (转)Java读带有BOM的UTF-8文件乱码原因及解决方法
- Java中对有BOM头的UTF-8文件的处理