ツールとして作成しているため、効率とか考えてません。
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 件のコメント:
コメントを投稿