0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ファイルマージのJava参考テンプレソース

Posted at

指定のディレクトリ配下にあるファイルを取得し、
内容の単項目チェックを行って
ひとつのファイルにマージするだけのJavaです。

sample.java

package practice;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

/*
 * ファイルのマージを行う
 */
public class MergePractice {

	public static void main(String[] args) {

		long startTime = System.currentTimeMillis();

		File directory = new File("入力ファイルのディレクトリ");
                // 入力ファイル一覧取得
		File[] filesArray = directory.listFiles();

		List<File> filesList = new ArrayList<File>();

		if(filesArray == null) return;

		// ファイルサイズ0バイト以外のものを処理対象にする
		for(File file:filesArray) {
			if(file.isFile() && file.length() != 0L) {
				filesList.add(file);
			}
		}

		// マージファイル
		File mergeFile = new File("出力ファイル");

		Path path = Paths.get(mergeFile.getAbsolutePath());

		// マージファイルが既にある場合は削除
		if(Files.exists(path)){
			try {
				Files.delete(path);
			}catch(IOException ex){
				ex.printStackTrace();
			}
		}

		// 読込みと書込み
		for(File readfile :filesList) {
			System.out.println(readfile.getName());
			try(BufferedReader br = new BufferedReader(new FileReader(readfile))){
				// trueを指定することで追記モードにする
				try(BufferedWriter bw = new BufferedWriter(new FileWriter(mergeFile,true))) {
					String line;
					while((line = br.readLine()) != null) {
						if(checkLine(line)) {
							bw.write(line);
							bw.newLine();
						}else {
							System.out.println("エラー行がありました。:" + line);
							bw.close();
							return;
						}
					}
					bw.flush();
				}catch(IOException ex) {
					ex.printStackTrace();
				}
			}catch(IOException ex) {
				ex.printStackTrace();
			}
		}

        long endTime = System.currentTimeMillis();
        System.out.println("処理時間:" + (endTime - startTime) + " ms");

	}

        /*
         * ファイル内容の単項目チェックを行う
         */
	private static boolean checkLine(String line) {

		String[] strArray = line.split(",");

                // 以下は一例
		if(strArray.length != 2) {
			return false;
		}

		if(strArray[1].length() != 3) {
			return false;
		}

		return true;
	}
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?