Download presentation
Presentation is loading. Please wait.
Published byShavonne Tate Modified over 9 years ago
1
CSC 213 – Large Scale Programming
2
Project #1 Recap
3
Today's Goals
4
Discuss reasons why files & file I/O important When & where used and what real value does it offer? Show how to read & write text to files in Java Classes & methods needed to perform these actions How these methods move through file as they work Limits of these actions & why we might want more Discuss another approach: RandomAccessFile s Benefits of using this for reading & writing data How this also has additional ways to access data
5
Image To Sharpen I have a (fuzzy) 1024 x 768 picture to sharpen 786,432 Only 786,432 numbers to type into photo application After analysis, must click & update each pixel
6
Image To Sharpen I have a (fuzzy) 1024 x 768 picture to sharpen 786,432 Only 786,432 numbers to type into photo application After analysis, must click & update each pixel
7
More Data Entry Positions Testing improved jet designs for oeingB-ay Using program to simulate designs' lift & drag 5 possible designs (each 150MB) to test this iteration Once results available, will tweak & retest designs Need room of touch typists for all this data entry
8
This Is (Semi-Real) Problem Large hadron collider about to come on-line No black hole when smashing particles at high speeds 28.5 GB/min Creates 28.5 GB/min for nerds seeking truth & beauty
9
This Is (Semi-Real) Problem Large hadron collider about to come on-line No black hole when smashing particles at high speeds 28.5 GB/min Creates 28.5 GB/min for nerds seeking truth & beauty
10
This Is (Semi-Real) Problem Large hadron collider about to come on-line No black hole when smashing particles at high speeds 28.5 GB/min Creates 28.5 GB/min for nerds seeking truth & beauty Hired trained monkeys to type data into programs
11
This Is (Semi-Real) Problem Large hadron collider about to come on-line No black hole when smashing particles at high speeds 28.5 GB/min Creates 28.5 GB/min for nerds seeking truth & beauty Hired trained monkeys to type data into programs college students
12
This Is (Semi-Real) Problem Large hadron collider about to come on-line No black hole when smashing particles at high speeds 28.5 GB/min Creates 28.5 GB/min for nerds seeking truth & beauty Hired trained monkeys to type data into programs college students
13
Yeah, Right
14
Real world demands we use files for most I/O Data files used to start and/or end most projects May contain: game levels, analysis results, CCD pics Way to read & write files needed to be useful
15
Reading a Text File Must first instantiate java.io.File object Pass String filename to the File constructor Throws a (checked) exception if file does not exist Another IOException possible for other odd errors Once created, use File to create Scanner Reads file's data rather than typing into keyboard At the same time, works like any other Scanner
16
Reading a Text File try { File readFile = new File("bob.dat"); Scanner scan = new Scanner(readFile); while (scan.hasNext()) { String line = scan.nextLine(); System.out.println(line); } scan.close(); } catch (FileNotFoundException fnfe) { System.err.println("Make the file, moron!"); } catch (IOException ioe) { ioe.printStackTrace(); }
17
Typical File I/O Ordinarily we read files sequentially Scanner scan ; // Instantiate a Scanner scan for the “file” below char c = ‘’; while (c != ‘s’) { c = scan.nextChar(); } scan Are 10^15 Files Just a Peta-File?
18
Typical File I/O Ordinarily we read files sequentially Scanner scan ; // Instantiate a Scanner scan for the “file” below char c = ‘’; while (c != ‘s’) { c = scan.nextChar(); } scan Are 10^15 Files Just a Peta-File?
19
Typical File I/O Ordinarily we read files sequentially Scanner scan ; // Instantiate a Scanner scan for the “file” below char c = ‘’; while (c != ‘s’) { c = scan.nextChar(); } scan Are 10^15 Files Just a Peta-File?
20
Typical File I/O Ordinarily we read files sequentially Scanner scan ; // Instantiate a Scanner scan for the “file” below char c = ‘’; while (c != ‘s’) { c = scan.nextChar(); } scan Are 10^15 Files Just a Peta-File?
21
Typical File I/O Ordinarily we read files sequentially Scanner scan ; // Instantiate a Scanner scan for the “file” below char c = ‘’; while (c != ‘s’) { c = scan.nextChar(); } scan Are 10^15 Files Just a Peta-File?
22
Writing a Text File Writing a text file only slightly more complicated Console is file in Unix, so can guess where this goes Need to first decide what should happen to file Easy if file does not exist create file & write to it Else what should happen to file's current contents? Mode used at opening determines file's contents If opening file in write mode, erases file at the start Starts at end of file in append mode, saving the data
23
Opening File For Writing Create instance of java.io.FileWriter Must specify mode to open file at this time Be very careful with this – there is no undo here! If file is impossible and so cannot be written to Cannot be done, so system throws IOException Not told if file existed before this command FileWriter nuked=new FileWriter("boom.t", false); FileWriter saved = new FileWriter("ScoreOnRebound",true);
24
Second Step To Writing Files FileWriter helps, but slow and hard to use Faster, simpler approach would be much nicer Using FileWriter create BufferedWriter Cannot change mode; must take care initially Two methods used to write out data to file Both methods will expand file & advance pointer Start writing new line – newLine() write(String s) – writes s to file End writing & save results with close()
25
Writing a Text File try { FileWriter fw = new FileWriter(“b.t”, true); BufferedWriter bw = new BufferedWriter(fw); for (int i = 10; i > 0; i--) { bw.write(“T minus ”); bw.write(i + “”); bw.newLine(); } bw.write(“Blast off!”); bw.close(); } catch (IOException ioe) { ioe.printStackTrace(); }
26
Its Not All Text We often want to store more than just text Translate numbers into binary to be used in program Storing as text wastes time converting back & forth (Often) Space also wasted for larger numbers Could instead store numbers in binary format Optimized for machine, as not easily human-readable But how often do we look at numbers in image file? Easy to determine sizes; each type has specific length To enable binary formats, use different File class
27
RandomAccessFile Built into Java's standard set of classes Found in the java.io package New or existing files can be accessed with it RandomAccessFile raf = new RandomAccessFile("f.txt","rw"); First argument ( "f.txt" ) is name of file used Access to file specified ( "rw" ) in second parameter Using write access ( "w" ) erases any data in the file Read & write anywhere in file using instance
28
Reading RandomAccessFile Defines methods to read most primitive types: boolean readBoolean() int readInt() double readDouble() Reads & returns value read from file Binary encoding used automatically File will store 32-bit int, not "125" Not human readable, but not really needed Can shrink files; always makes sizes predictable
29
Reading RandomAccessFile Reading String s takes a little extra work String readUTF() Requires that String was recorded in UTF format Not totally readable, but makes sense to machines Or use readChar() to read in String … …but need null character (' \0 ') at end End of String not easy to find without some hint Also remember that Java’s char not always readable readByte() is readable, but needs typecast
30
Writing RandomAccessFile Also defines methods to write to a file: void writeInt(int i) void writeDouble(double d) void writeUTF(String s) Writes value at location in the file we are currently at As it is needed, methods extend file also When writing data, erases anything there previously
31
RandomAccessFile I/O Unless specified still read &write sequentially RandomAccessFile raf = new …; char c = ‘’; while (c != ‘s’) { c = (char)raf.readByte(); raf.writeByte((byte)c); } Could I rename machine "PetaHertz"
32
Skipping Around The File RandomAccessFile allows moving in the file Skip past sections using int skipBytes(int n) void seek(long pos) moves to position in file Positions specified as bytes from beginning of file
33
RandomAccessFile I/O Sequential access is no longer required RandomAccessFile raf = new …; char c; raf.skipBytes(raf.length()-1); c = (char)raf.readByte(); raf.seek(0); raf.writeByte((byte)c); Could I rename machine "PetaHertz"
34
RandomAccessFile I/O Sequential access is no longer required RandomAccessFile raf = new …; char c; raf.skipBytes(raf.length()-1); c = (char)raf.readByte(); raf.seek(0); raf.writeByte((byte)c); Could I rename machine "PetaHertz"
35
RandomAccessFile I/O Sequential access is no longer required RandomAccessFile raf = new …; char c; raf.skipBytes(raf.length()-1); c = (char)raf.readByte(); raf.seek(0); raf.writeByte((byte)c); Could I rename machine "PetaHertz"
36
RandomAccessFile I/O Sequential access is no longer required RandomAccessFile raf = new …; char c; raf.skipBytes(raf.length()-1); c = (char)raf.readByte(); raf.seek(0); raf.writeByte((byte)c); Could I rename machine "PetaHertz"
37
RandomAccessFile I/O Sequential access is no longer required RandomAccessFile raf = new …; char c; raf.skipBytes(raf.length()-1); c = (char)raf.readByte(); raf.seek(0); raf.writeByte((byte)c); "ould I rename machine "PetaHertz"
38
For Next Lecture
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.