2011年5月25日水曜日

JAVA ファイルの文字コード変換

ファイルの文字コードを変換するクラスです。
ツールとして作成しているため、効率とか考えてません。

public static void main(String[] args) {
}
を実装して使ってみてください。


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class ChangeCodeClass {
    /**
     * 入力ファイル(input)の文字コード(fic)を文字コード(foc)で出力ファイル(output)を作成する
     * @param fi     input file
     * @param fic input file's code
     * @param fo     output file
     * @param foc output file's code
     * @return boolean true : succeeded, false : failed
     */
    public boolean changeCode(File fi, String fic, File fo, String foc) {
        BufferedReader br = null;
        BufferedWriter bw = null;
        String line = null;
        if (fi == null || fo == null || fic == null || fic.equals("") || foc == null || foc.equals("")) {
            System.out.println("パラメータに誤りがあります。");
            return false;
        } else if (fi.isDirectory() || fo.isDirectory()) {
            System.out.println("ファイルではありません。");
            return false;
//      } else if (!fi.canRead() || !fo.canWrite()) {
//          System.out.println("読み込みまたは、書き込みが出来ません。");
//          return false;
        } else if (!fi.exists()) {
            System.out.println("入力ファイルが存在しません。");
            return false;
        } else if (fo.exists()) {
            System.out.println("出力ファイルと同名のファイルが存在します。");
            return false;
        } else if (fi.getPath().equals(fo.getPath())) {
            System.out.println("入力ファイルと出力ファイルが同一のパスです。");
            return false;
        }
        try {
            br = new BufferedReader(new InputStreamReader(new FileInputStream(fi), fic));
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fo), foc));
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
            }
            bw.close();
            br.close();
    
        } catch (FileNotFoundException e) {
            System.out.println("ファイルが見つかりません。");
            return false;
        } catch (UnsupportedEncodingException e) {
            System.out.println("文字コードがサポートされていません。");
            return false;
        } catch (IOException e) {
            System.out.println("入出力でエラーが発生しました。");
            return false;
        }

        return true;
    }
}

0 件のコメント:

コメントを投稿