Presentation is loading. Please wait.

Presentation is loading. Please wait.

40-244 – Advanced Programming P ROGRAMMING IN Lecture 22 Input and Output System.

Similar presentations


Presentation on theme: "40-244 – Advanced Programming P ROGRAMMING IN Lecture 22 Input and Output System."— Presentation transcript:

1 40-244 – Advanced Programming P ROGRAMMING IN Lecture 22 Input and Output System

2 What We Will Learn Using directory listings Using Streams Decorators Readers and Writers Tokenizers

3 Files and Directories File class in java.io package Represents name of a file or a set of files You cannot read or write data using File Used for Manipulating filenames Working with directories Checking file attributes

4 File Example Using File.list method Directory lister example from TIJ Chap. 11 DirList.java DirList3.java (using anonymous inner classes)

5 Input and Output Looking into input and output in an abstract way Input: Reading data from a source Source: anything that we can read data items from it Output: Writing data to a sink Sink: anything that we can write data items to it

6 Streams Abstract class representing a data source/sink InputStream: Represents a source Provides read() methods OutputStream: Represent a sink Provides write() methods

7 Kinds of Streams Streams are categorized according to type of source or sink they represent Files Arrays of bytes Strings Pipes Internet connections

8 InputStream Example Using echo: echo(System.in) echo(new FileInputStream("test.txt")) It works for any kind of input stream public void echo(InputStream in) throws IOException { int b; while ((b = in.read()) != -1) System.out.print((char)b); }

9 Input Stream Classes ByteArrayInputStream Arrays of bytes FileInputStream Files StringBufferInputStream Strings ObjectInputStream Serialized objects

10 Adding Features Adding various features to streams such as: Compression Line-numbering Buffering Push-back Combining these features with every stream causes inheritance tree explosion! CompressedFileInputStream BufferedFileInputStream CompressedBufferedFileInputStream,...

11 Filter Streams Wrap around other streams Adding features to them Without changing the interface Such as: BufferedInputStream LineNumberInputStream PushbackInputStream DataInputStream ZipInputStream

12 Filter Example We want to read from a file which is compressed with buffering mechanism with ability to pushback data into it We use one filter for each

13 Filter Example close read File I S close read Buffered I S close read Zip I S Pushback I S close read

14 Using Filters After construction, in can be used as an ordinary input stream Additional methods for pushback is available PushbackInputStream in = new PushbackInputStream( new ZipInputStream( new BufferedInputStream( new FileInputStream("in.dat")))); echo(in); in.pushback(89); in.close();

15 Decorator Pattern All filters are subclasses of FilterInputStream Which is a InputStream itself Takes an InputStream upon construction And filters data going through it The interface is not changed Since the filter is also an Input Stream This way to define classes to add features is called the Decorator pattern

16 Another Example A class for downloading URLs Downloader.java

17 Readers and Writers A separate hierarchy but pretty similar to streams Added from Java 1.1 to handle Unicode IO Reader is similar to InputStream Writer is similar to OutputStream Similar usage of filters

18 Readers Example Using echoLn: echoLn(new FileReader("in.txt")); public void echoLn(Reader in) throws IOException { LineNumberReader st = new LineNumberReader(in); String line; while ((line = st.readLine()) != null) System.out.println(st.getLineNumber() + ":" + line); }

19 Streams to Readers To read from a stream as a reader, use InputStreamReader OutputStreamWriter is used for output Reverse conversion is invalid Reader r = new InputStreamReader(System.in); echoLn(r);

20 Formatted Input Is not easy! One way is to read lines and then parse items Using tokenizers is another way StringTokenizer: breaking strings into tokens StreamTokenizer: reads from a stream or reader token by token

21 StreamTokenizer Can be used as a scanner Set of configurable items: whitespaces, punctuations, comment characters Can recognize ordinary tokens numbers quoted strings comments

22 Tokenizer Examples WordCount.java from TIJ Chapter 11 is a good example ComicsManager.java also uses StreamTokenizer to read the configuration file Note about comments


Download ppt "40-244 – Advanced Programming P ROGRAMMING IN Lecture 22 Input and Output System."

Similar presentations


Ads by Google