2011年5月26日木曜日

JAVA ファイル結合処理

複数のテキストファイルを1つのファイルにするクラスです。
ツールとして作成しているため、効率とか考えてません。

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 ConcatFileClass {
    /**
     * 指定されたディレクトリ(dir)配下のファイルを1つのファイル(f)に結合します。
     * @param dir File
     * @return boolean true : succeeded, false : failed
     */
    public boolean execute(File dir, File f) {
        return this.execute(dir, f, "SJIS", "SJIS");
    }
    public boolean execute(File dir, File f, String fic, String foc) {
        BufferedReader br = null;
        BufferedWriter bw = null;
        File[] files = null;
        String line = null;
        int count = 0;
        if (dir == null || f == null) {
            System.out.println("パラメータに誤りがあります。");
            return false;
        } else if (dir.isFile()) {
            System.out.print(dir.toString());
            System.out.println("は、ディレクトリではありません。");
            return false;
        } else if (f.isDirectory()) {
            System.out.print(f.toString());
            System.out.println("は、ファイルではありません。");
            return false;
//      } else if (f.canWrite()) {
//          System.out.print(f.toString());
//          System.out.println("は、書き込み可能ファイルではありません。");
//          return false;
        } else if (!dir.exists()) {
            System.out.println("ディレクトリが存在しません。");
            return false;
        }
        try {
            files = dir.listFiles();
            if (files == null || files.length == 1) {
                System.out.println("結合するファイルが存在しません。");
                return false;
            }
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), foc));
            count = files.length;
            for (int i = 0; i < count; i++) {
                br = new BufferedReader(new InputStreamReader(new FileInputStream(files[i]), fic));
                while ((line = br.readLine()) != null) {
                    bw.write(line);
                    bw.newLine();
                }
                br.close();
            }
            bw.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 件のコメント:

コメントを投稿