1 / 13

CSE 1341 Principles of Computer Science I

CSE 1341 Principles of Computer Science I. Spring 2008 Mark Fontenot mfonten@engr.smu.edu. Note Set 11. Note Set 11 Overview. Basics of Files and File handling Character based file i/o. Currently. Data in an executing program Stored in RAM while program is in execution

alexis
Download Presentation

CSE 1341 Principles of Computer Science I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 1341 Principles of Computer Science I Spring 2008 Mark Fontenot mfonten@engr.smu.edu Note Set 11

  2. Note Set 11 Overview Basics of Files and File handling Character based file i/o

  3. Currently • Data in an executing program • Stored in RAM while program is in execution • When program ends, data is no longer accessible • RAM is volatile storage – must have powered to maintain state (retain data)

  4. Persistent Storage • Non-volatile memory – doesn’t need power to maintain state • Data can survive a power cycle • Examples • hard-drive • CDs • USB drive (flash memory)

  5. File processing • Part of nearly all languages • Stream – ordered data read or written • abstraction in Java • Two types of file processing in Java for us • Text-based file i/o • Binary File I/O - Object serialization (storing objects directly to file) • Object serialization/deserialzation

  6. Data Hierarchy • Lowest level – 1s & 0s - The bit • “easy” to create computer hardware that only had to maintain two states • 2 bits – 4 combinations • 00, 01, 10, 11 • 3 bits – 8 combination • 000, 001, 010, 011, 100, 101, 110, 111 • 4 bits – 16 combinations • n bits – 2n combinations • 8 bits –> 1 byte • Java uses 2 bytes to represent a character (16 bytes) – Unicode character set • Unicode contains characters from many of the worlds languages

  7. Data Hierarchy • Can group characters to make fields • i.e. string of characters to make name • Group of fields makes a record • record is implemented as a class in java • think about just the data stored in the data members of one instance of an object • Name, Id, Address, etc… • Group of records can be stored in a file • Employee file • Customer file • Inventory file

  8. Java and Files • Each file – sequential stream of bytes • How that stream/sequence is interpreted is up to the programmer who reads/writes the file • How do we know when we’re done reading? • OS provides some mechanism to know that the complete contents of the file have been read (sentinel value) • programmer knows exactly how many “things” to read from the file • 2 Typles of File I/O • Character File I/O • Writing text to files • Binary File I/O • Writing byte data or complete objects

  9. Sample class public class Account { private String acctNum; private String fName; private double balance; public Account (String num, String name, double bal) { acctNum = num; fName = name; balance = bal; } //Assume Accessors and Mutators for each data member }

  10. Sample Output import java.util.*; import java.io.*; public class FileOutput { public static void main (String [] args) { //Create an arraylist to store customers ArrayList<Account> customers = new ArrayList<Account> (); //create some sample customers and add to list Account a = new Account ("123", "Sam", 123.34); customers.add(a); a = new Account("234", "Sue", 223.33); customers.add(a); a = new Account("144", "Mark", 322.22); customers.add(a);

  11. Sample Output //open a file Formatter output = null; //must open the file in a try catch block try { output = new Formatter("data.txt"); } catch (IOException e) { System.out.println("There is an error - exiting"); System.exit(1); } //write everything from list to output for (Account x: customers) output.format("%s %s %.2f\n", x.getAcctNum(), x.getFName(), x.getBalance()); output.close(); } } This is text-based or character-based file I/O.

  12. Sample Read import java.util.*; import java.io.*; public class FileInput { public static void main (String [] args) { //List to put the objects we're going to read from the file ArrayList <Account> list = new ArrayList<Account> (); //We'll use a scanner object to read from the file. //Are there other ways? Of course... Scanner s = null; try { s = new Scanner (new File ("data.txt")); } catch (IOException e) { System.out.println("Error opening file"); System.exit(1); }

  13. Sample Read //Temp variables to store values read from file String aNum, fName; double bal; while (s.hasNext()) { aNum = s.next(); fName = s.next(); bal = s.nextDouble(); Account a = new Account(aNum, fName, bal); list.add(a); } //print the customers out for(Account x: list) System.out.println(x); } } could be replaced with: Account a = new Account (s.next(), s.next(), s.nextDouble());

More Related