2011年5月27日金曜日

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;

public class DivideFileClass {
    public boolean divideFile(File fi, int row) {
        return this.divideFile(fi, row, "UTF-8", "UTF-8");
    }
    public boolean divideFile(File fi, int row, String iCode, String oCode) {
        BufferedReader br = null;
        BufferedWriter bw = null;
        FileInputStream fis = null;
        FileOutputStream fos = null;
        InputStreamReader isr = null;
        OutputStreamWriter osw = null;
        String line = null;
        int count = 0;
        int fileNo = 1;
        try {
            fis = new FileInputStream(fi);
            isr = new InputStreamReader(fis, iCode);
            br = new BufferedReader(isr);
            fos = new FileOutputStream(fi.getPath() + String.valueOf(fileNo));
            osw = new OutputStreamWriter(fos, oCode);
            bw = new BufferedWriter(osw);
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
                if (count == row) {
                    bw.close();
                    fileNo++;
                    fos = new FileOutputStream(fi.getPath() + String.valueOf(fileNo));
                    osw = new OutputStreamWriter(fos, oCode);
                    bw = new BufferedWriter(osw);
                    count = 0;
                }
                count++;
            }
            bw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return false;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }
}

0 件のコメント:

コメントを投稿