Thursday, September 26, 2013

Java reading and writing file line by line

We will be using BufferedReader to read a structured file line by line and then using BufferedWriter to write it out.

The example takes some structured data and creates MySQL insert statements for each dataset and then outputs it as a file.

package com.ignite.tools.someTextParser;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class main {
private final static String SUBJECT_SEPARATOR = "/";
private final static String SINGLE_QUOTE = "'";
public static void main(String[] args) {
FileInputStream inputStream = null;
BufferedReader bufferedReader = null;
FileOutputStream outputStream = null;
BufferedWriter bufferedWriter = null;
try {
inputStream = new FileInputStream("/Users/kenneth/Desktop/data_normalized.txt");
outputStream = new FileOutputStream("/Users/kenneth/Desktop/data_modified.txt");
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
String codeLine = null;
String subjectLine = null;
StringBuilder insertSql = new StringBuilder();
String subjects[] = null;
String parentCategory = null;
String subcategory = null;
while(true) {
codeLine = bufferedReader.readLine();
subjectLine = bufferedReader.readLine();
if(codeLine == null || subjectLine == null) {
break;
}
codeLine = codeLine.trim();
subjectLine = subjectLine.trim();
subjects = subjectLine.split(SUBJECT_SEPARATOR);
parentCategory = subjects[0].trim();
subcategory = subjectLine.replace(parentCategory + " / ", "").trim();
parentCategory = parentCategory.replace("'", "\\'");
subcategory = subcategory.replace("'", "\\'");
subjectLine = subjectLine.replace("'", "\\'");
insertSql.setLength(0);
insertSql.append("insert into Category (name, fullName, code) values (");
insertSql.append(SINGLE_QUOTE);
insertSql.append(subcategory);
insertSql.append(SINGLE_QUOTE);
insertSql.append(", ");
insertSql.append(SINGLE_QUOTE);
insertSql.append(subjectLine);
insertSql.append(SINGLE_QUOTE);
insertSql.append(", ");
insertSql.append(SINGLE_QUOTE);
insertSql.append(codeLine);
insertSql.append(SINGLE_QUOTE);
insertSql.append(");");
bufferedWriter.write(insertSql.toString());
bufferedWriter.newLine();
}
bufferedWriter.close();
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
view raw filereader.java hosted with ❤ by GitHub

No comments:

Post a Comment