Sometimes it's useful to have access to a text file as a List of String. This makes, for example, replacement of lines identified by their number a quite trivial procedure. Extending a List class is a convenient way of arranging this. You'll find the source code HERE There is also a more fully-featured version HERE which, had it not violated Java naming convention, I would have been tempted to call StringCRUDe, since it allows a text file to be used for basic CRUD operations.
import java.io.*;
import java.util.ArrayList;
/**
* A utility class the allows a text file to be
* treated as a collection of Strings
*
* @author CEHJ
* @created 29 February 2004
*/
public class StringList extends ArrayList<String> {
/**
*Constructor for the StringList object
*/
public StringList() {
super();
}
public void read(InputStream in) {
read(new InputStreamReader(in));
}
public void read(Reader r) {
String line = null;
BufferedReader in = null;
try {
in = new BufferedReader(r);
while ((line = in.readLine()) != null) {
add(line);
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
in.close();
}
catch (IOException e) {
/* ignore */
}
}
}
/**
* Constructor for the StringList object
*
* @param fileName The file to open
*/
public void read(String fileName) {
try {
read(new FileReader(fileName));
}
catch(IOException e) {
e.printStackTrace();
}
}
/**
* Save the String to named file
*
* @param fileName The name of the file to save to
*/
public void save(String fileName) {
PrintWriter out = null;
try {
out = new PrintWriter(new FileOutputStream(fileName), true);
for (int i = 0; i < size(); i++) {
out.println((String) get(i));
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (out != null) {
out.close();
}
}
}
}
import java.util.ArrayList;
/**
* A utility class the allows a text file to be
* treated as a collection of Strings
*
* @author CEHJ
* @created 29 February 2004
*/
public class StringList extends ArrayList<String> {
/**
*Constructor for the StringList object
*/
public StringList() {
super();
}
public void read(InputStream in) {
read(new InputStreamReader(in));
}
public void read(Reader r) {
String line = null;
BufferedReader in = null;
try {
in = new BufferedReader(r);
while ((line = in.readLine()) != null) {
add(line);
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
in.close();
}
catch (IOException e) {
/* ignore */
}
}
}
/**
* Constructor for the StringList object
*
* @param fileName The file to open
*/
public void read(String fileName) {
try {
read(new FileReader(fileName));
}
catch(IOException e) {
e.printStackTrace();
}
}
/**
* Save the String to named file
*
* @param fileName The name of the file to save to
*/
public void save(String fileName) {
PrintWriter out = null;
try {
out = new PrintWriter(new FileOutputStream(fileName), true);
for (int i = 0; i < size(); i++) {
out.println((String) get(i));
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (out != null) {
out.close();
}
}
}
}