Java I/O: Understanding Streams, Reading and Writing Files in Java, Slides of Java Programming

An introduction to java i/o, focusing on streams, reading and writing files using java. It covers the principles of java i/o, how to open, use, and close streams, and manipulating input data. The document also discusses text files, linereader and linewriter classes, and filedialogs for file selection. Additionally, it touches upon serialization for reading and writing objects to files.

Typology: Slides

2011/2012

Uploaded on 07/07/2012

proo
proo 🇮🇳

4.4

(26)

96 documents

1 / 40

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Simple Java I/O
Part I
General Principles
docsity.com
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28

Partial preview of the text

Download Java I/O: Understanding Streams, Reading and Writing Files in Java and more Slides Java Programming in PDF only on Docsity!

Simple Java I/O

Part I General Principles

Streams

  • All modern I/O is stream-based
  • A stream is a connection to a source of data or to a destination for data (sometimes both)
  • An input stream may be associated with the keyboard
  • An input stream or an output stream may be associated with a file
  • Different streams have different characteristics:
    • A file has a definite length, and therefore an end
    • Keyboard input has no specific end

Why Java I/O is hard

  • Java I/O is very powerful, with an overwhelming number of options
  • Any given kind of I/O is not particularly difficult
  • The trick is to find your way through the maze of possibilities

open use close

Opening a stream

  • There is data external to your program that you want to get, or you want to put data somewhere outside your program
  • When you open a stream, you are making a connection to that external place
  • Once the connection is made, you forget about the external place and just use the stream

open use close

Using a stream

  • Some streams can be used only for input, others only for output, still others for both
  • Using a stream means doing input from it or output to it
  • But it’s not usually that simple--you need to manipulate the data in some way as it comes in or goes out

open use close

Example of using a stream

int ch; ch = fileReader.read( );

  • The fileReader.read() method reads one character and returns it as an integer, or - if there are no more characters to read
  • The meaning of the integer depends on the file encoding (ASCII, Unicode, other)

open use close

Reading lines

String s; s = bufferedReader.readLine( );

  • A BufferedReader will return null if there is nothing more to read

open use close

Closing

  • A stream is an expensive resource
  • There is a limit on the number of streams that you can have open at one time
  • You should not have more than one stream open on the same file
  • You must close a stream before you can open it again
  • Always close your streams!

open use close

Text files

  • Text (.txt) files are the simplest kind of files
    • text files can be used by many different programs
  • Formatted text files (such as .doc files) also contain binary formatting information
  • Only programs that “know the secret code” can make sense formatted text files
  • Compilers, in general, work only with text

My LineReader class

class LineReader { BufferedReader bufferedReader;

LineReader(String fileName) {...}

String readLine( ) {...}

void close( ) {...} }

The full LineReader constructor

LineReader(String fileName) { FileReader fileReader = null; try { fileReader = new FileReader(fileName); } catch (FileNotFoundException e) { System.err.println ("LineReader can't find input file: " + fileName); e.printStackTrace( ); } bufferedReader = new BufferedReader(fileReader); }

readLine

String readLine( ) { try { return bufferedReader.readLine( ); } catch(IOException e) { e.printStackTrace( ); } return null; }

How did I figure that out?

  • I wanted to read lines from a file
  • I found a readLine method in the BufferedReader class
  • The constructor for BufferedReader takes a Reader as an argument
  • An InputStreamReader is a kind of Reader
  • A FileReader is a kind of InputStreamReader

The LineWriter class

class LineWriter { PrintWriter printWriter;

LineWriter(String fileName) {...}

void writeLine(String line) {...}

void close( ) {...} }