Text and Binary Files
Text files
Class with a text file
A class that works with a text file
import java.io.*; import java.util.*; public class ProductTextFile implements ProductDAO { private File productsFile = null; private final String FIELD_SEP = "\t"; public ProductTextFile() { productsFile = new File("products.txt"); } private void checkFile() throws IOException { // if the file doesn't exist, create it if (!productsFile.exists()) productsFile.createNewFile(); } private boolean saveProducts(ArrayListproducts) { PrintWriter out = null; try { this.checkFile(); // open output stream for overwriting out = new PrintWriter( new BufferedWriter( new FileWriter(productsFile))); // write all products in the array list // to the file for (Product p : products) { out.print(p.getCode() + FIELD_SEP); out.print(p.getDescription() + FIELD_SEP); out.println(p.getPrice()); } } catch(IOException ioe) { ioe.printStackTrace(); return false; } finally { this.close(out); } return true; } private void close(Closeable stream) { try { if (stream != null) stream.close(); } catch(IOException ioe) { ioe.printStackTrace(); } } public ArrayList getProducts() { BufferedReader in = null; try { this.checkFile(); in = new BufferedReader( new FileReader(productsFile)); ArrayList products = new ArrayList (); // read all products stored in the file // into the array list String line = in.readLine(); while(line != null) { String[] columns = line.split(FIELD_SEP); String code = columns[0]; String description = columns[1]; String price = columns[2]; Product p = new Product( code, description, Double.parseDouble(price)); products.add(p); line = in.readLine(); } return products; } catch(IOException ioe) { ioe.printStackTrace(); return null; } finally { this.close(in); } } public Product getProduct(String code) { ArrayList products = this.getProducts(); for (Product p : products) { if (p.getCode().equals(code)) return p; } return null; } public boolean addProduct(Product p) { ArrayList products = this.getProducts(); products.add(p); return this.saveProducts(products); } public boolean deleteProduct(Product p) { ArrayList products = this.getProducts(); products.remove(p); return this.saveProducts(products); } public boolean updateProduct(Product newProduct) { ArrayList products = this.getProducts(); // get the old product and remove it Product oldProduct = this.getProduct(newProduct.getCode()); int i = products.indexOf(oldProduct); products.remove(i); // add the updated product products.add(i, newProduct); return this.saveProducts(products); } }