[JAVA] Convertir un fichier csv en fichier d'enregistrement de longueur fixe à l'aide d'énumération

enum Je ne l'ai pas tellement utilisé, alors je l'ai fait en pratique. La praticité est inconnue. La version java est 6.

·La source

SamleFixedLengthFromCsv.java


package prottype;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import au.com.bytecode.opencsv.CSVReader;

public class SamleFixedLengthFromCsv {

	//Définition de l'enregistrement: nombre de caractères
	enum recordDef {
		col01(8), col02(24), col03(24), col04(3);

		private int length;

		private recordDef(int length) {
			this.length = length;
		}

		public int getLength() {
			return this.length;
		}
	}

	//Définition de l'enregistrement:(Caractère par défaut,caractère de remplissage)
	enum recordVal {
		col01("0,0"), col02(", "), col03(", "), col04("---,-");

		private recordVal(String val) {
			this.val = val;
		}

		private String val;

		public void setVal(String val) {
			this.val = val;
		}

		public String getVal() {
			return this.val;
		}
	}

	/**
	 *classe principale
	 */
	public static void main(String[] args) throws IOException {
		SamleFixedLengthFromCsv proc = new SamleFixedLengthFromCsv();
		proc.execute();
	}

	/**
	 *Courir
	 */
	protected void execute() {
		try {
			mainProc();
		} catch (Exception e) {
			System.out.println("La sortie du fichier a échoué ...");
		}
	}

	/**
	 *Processus principal
	 */
	public void mainProc() throws Exception {
		PrintWriter pw = null;
		CSVReader reader = null;
		try {
			File file = new File("./test.dat");

			reader = new CSVReader(new FileReader(new File("./test.csv")));

			file.delete();
			file.createNewFile();
			pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));

			String[] record;
			while ((record = reader.readNext()) != null) {
				recordVal.col01.setVal(record[0] + ",0");
				recordVal.col02.setVal(record[1]+", ");
				recordVal.col03.setVal(record[2]+", ");
				recordVal.col04.setVal(record[3]+ ",-");
				pw.print(createFixedRecords() +  System.getProperty("line.separator") );
			}
			pw.close();
			reader.close();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (pw != null) {
				pw.close();
			}
			if (reader != null) {
				reader.close();
			}
		}
	}


	/**
	 *Création d'enregistrements de longueur fixe
	 */
	private String createFixedRecords() {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < recordVal.values().length; i++) {
			sb.append(createFixedColumn(i));
		}
		return sb.toString();
	}

	/**
	 *Convertir les éléments en longueur fixe
	 */
	private String createFixedColumn(int defNum) {
		StringBuilder tempPad = new StringBuilder();
		StringBuilder val = new StringBuilder(recordVal.values()[defNum].getVal().split(",")[0]);
		StringBuilder pad = new StringBuilder(recordVal.values()[defNum].getVal().split(",")[1]);

		if (val.length() < recordDef.values()[defNum].length) {
			for (int i = val.length(); i < recordDef.values()[defNum].length; i++) {
				tempPad.append(pad);
			}
		}

		//Les nombres sont justifiés à droite, sinon justifiés à gauche
		try {
			Integer.parseInt(val.toString());
			return tempPad.append(val).toString();
		} catch(Exception e) {
			return val.append(tempPad.toString()).toString();
		}
	}
}

· Résultat d'exécution

before

test.csv(Fichier source de conversion)


"1","Bataille navale","Kongo","JPN"
"2","Croiseur lourd","Takao","JPN"
"3","Destructeur","Shigure","JPN"

after

test.csv(Fichier source de conversion)


00000001 Cuirassé, Kongo, JPN, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥
00000002 Croiseur lourd, Kaohsiung, JPN, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥, ‥
00000003 Destructeur, Shigure, JPN, ‥, ‥, ‥, ‥

Je veux m'habituer de plus en plus à utiliser enum.

Recommended Posts

Convertir un fichier csv en fichier d'enregistrement de longueur fixe à l'aide d'énumération
[Ruby] Comment convertir un fichier CSV en Yaml (Yml)
[Java] Convertit le code DB en valeur de code à l'aide d'énum
Convertir l'alphabet en 26 base + environ la longueur du tableau
Comment convertir un fichier erb en haml
Convertir les paramètres de demande en Enum au printemps
Écrire dans un fichier en utilisant ShiftJIS ・ Lire un fichier (Kotlin / JVM)
[Spring Batch] Données de la table de sortie dans un fichier CSV