blog.Ring.idv.tw

BOMKiller

BOMKiller


底下是一個針對UTF-8編碼的BOMKiller程式~ 如果你開發程式時所採用的文字編輯器會自動為你加上BOM的話~ 那BOMKiller可以協助你更容易刪除這些BOM~

好久沒寫Java了~~ 趁這個機會再回味一下用UltraEdit純手工寫程式~

BOMKiller原始檔

/**
 * Date: 2008-02-18
 * Shen (http://blog.ring.idv.tw)
 **/
import java.io.*;  
import java.nio.channels.*;

public class BOMKiller
{  
	private String suffix = null;
	public BOMKiller(String suffix)
	{
		this.suffix = suffix;
	}
	
	public static void main(String arg[])
	{
		if(arg.length != 2 || (new File(arg[0])).isDirectory() == false)
		{
			System.out.println("Usage:java BOMKiller [directory_path] [suffix_name]");
			System.exit(0);
		}
		BOMKiller killer = new BOMKiller(arg[1]);
              	killer.listFiles(new File(arg[0]));
      	}
      	public void listFiles(File f)
      	{
		File[] filelist = f.listFiles(new FileFilter()
		{
			public boolean accept(File tempf)
			{
				if(tempf.isDirectory())
				{
					listFiles(tempf);
					return false;
				}
				return tempf.getName().endsWith(suffix);
			}
		});
		
          	int flength = filelist.length;
          	for(int i = 0; i < flength ; ++i)
		{  
              		killBOM(filelist[i]);
          	}
	}
	public void killBOM(File f)
	{
		try
		{
			FileInputStream fis = new FileInputStream(f);		
			if(fis.read() == 0xEF)
			{
				if(fis.read() == 0xBB)
				{
					if(fis.read()==0xBF)
					{
						String path = f.getPath();
						System.out.println("BOMKiller:"+path);
						
						File toFile = new File(path+".tmp");
						FileChannel fic = fis.getChannel();
						FileChannel foc = new FileOutputStream(toFile).getChannel();
						fic.transferTo(3, fic.size(),foc);
						fic.close();
						foc.close();
						f.delete();
						toFile.renameTo(new File(path));
					}
				}
			}
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

用法

Usage:java BOMKiller [directory_path] [suffix_name]

e.g.

java BOMKiller C:\htdocs .php

相關文章

IE Bug? UTF-8 Encoding for Byte Order Mark(BOM)

2008-02-18 04:38:44

Leave a Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment