Java Input/Output. 11 April 2013 OSU CSE 1

Similar documents
Lecture 11.1 I/O Streams

IT101. File Input and Output

CS 251 Intermediate Programming Java I/O Streams

Byte and Character Streams. Reading and Writing Console input and output

I/O in Java I/O streams vs. Reader/Writer. HW#3 due today Reading Assignment: Java tutorial on Basic I/O

CS1092: Tutorial Sheet: No 3 Exceptions and Files. Tutor s Guide

PIC 20A Streams and I/O

File IO. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 20

Simple Java Input/Output

Basic I/O - Stream. Java.io (stream based IO) Java.nio(Buffer and channel-based IO)

09-1. CSE 143 Java GREAT IDEAS IN COMPUTER SCIENCE. Overview. Data Representation. Representation of Primitive Java Types. Input and Output.

Agenda & Reading. Python Vs Java. COMPSCI 230 S Software Construction

Overview CSE 143. Input and Output. Streams. Other Possible Kinds of Stream Converters. Stream after Stream... CSE143 Wi

COMP-202: Foundations of Programming. Lecture 22: File I/O Jackie Cheung, Winter 2015

CSC 1214: Object-Oriented Programming

Lab 5: Java IO 12:00 PM, Feb 21, 2018

Darshan Institute of Engineering & Technology for Diploma Studies

Lecture 22. Java Input/Output (I/O) Streams. Dr. Martin O Connor CA166

Week 12. Streams and File I/O. Overview of Streams and File I/O Text File I/O

תוכנה 1 תרגול 8 קלט/פלט רובי בוים ומתי שמרת

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE. Representation of Primitive Java Types. CSE143 Au

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE. Representation of Primitive Java Types. CSE143 Sp

Input, Output and Exceptions. COMS W1007 Introduction to Computer Science. Christopher Conway 24 June 2003

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE

Remedial Java - io 8/09/16. (remedial) Java. I/O. Anastasia Bezerianos 1

1.00 Lecture 30. Sending information to a Java program

Objec&ves. Review. Standard Error Streams

HST 952. Computing for Biomedical Scientists Lecture 8

Special error return Constructors do not have a return value What if method uses the full range of the return type?

Introduction Unit 4: Input, output and exceptions

I/O STREAM (REQUIRED IN THE FINAL)

COMP200 INPUT/OUTPUT. OOP using Java, based on slides by Shayan Javed

Programming Languages and Techniques (CIS120)

COMP 213. Advanced Object-oriented Programming. Lecture 19. Input/Output

COMP 202 File Access. CONTENTS: I/O streams Reading and writing text files. COMP 202 File Access 1

Sri Vidya College of Engineering & Technology Question Bank

COMP-202: Foundations of Programming. Lecture 12: Linked List, and File I/O Sandeep Manjanna, Summer 2015

File Operations in Java. File handling in java enables to read data from and write data to files

Software 1 with Java. Recitation No. 9 (Java IO) December 10,

Software 1 with Java. Recitation No. 7 (Java IO) May 29,

Software 1. Java I/O

CS Programming I: File Input / Output

Input from Files. Buffered Reader

23 Error Handling What happens when a method is called? 23.1 What is Exception Handling? A.m() B.n() C.p()

Exceptions and Working with Files

Project 1. Java Data types and input/output 1/17/2014. Primitive data types (2) Primitive data types in Java

Question 1. (2 points) What is the difference between a stream and a file?

Java Input / Output. CSE 413, Autumn 2002 Programming Languages.

WOSO Source Code (Java)

CS Programming I: File Input / Output

Today. Book-keeping. File I/O. Subscribe to sipb-iap-java-students. Inner classes. Debugging tools

Tirgul 1. Course Guidelines. Packages. Special requests. Inner classes. Inner classes - Example & Syntax

Course Content. Objectives of Lecture 22 File Input/Output. Outline of Lecture 22. CMPUT 102: File Input/Output Dr. Osmar R.

Experiment No: Group B_4

Object-Oriented Programming Design. Topic : Streams and Files

Programming Languages and Techniques (CIS120)

Streams and File I/O

Text User Interfaces. Keyboard IO plus

Any serious Java programmers should use the APIs to develop Java programs Best practices of using APIs

Lab 2: File Input and Output

Object Oriented Software Design

Object Oriented Software Design

Chapter 10. File I/O. Copyright 2016 Pearson Inc. All rights reserved.

Lecture 4: Exceptions. I/O

COMP 202 File Access. CONTENTS: I/O streams Reading and writing text files. COMP File Access 1

File I/O Array Basics For-each loop

C17: File I/O and Exception Handling

CSE 1223: Introduction to Computer Programming in Java Chapter 7 File I/O

Welcome to CIS 068! 1. GUIs: JAVA Swing 2. (Streams and Files we ll not cover this in this semester, just a review) CIS 068

ITI Introduction to Computer Science II

Unit 10: exception handling and file I/O

Exceptions Chapter 10. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

CSE 143 Sp03 Midterm 2 Sample Solution Page 1 of 7. Question 1. (2 points) What is the difference between a stream and a file?

Programmierpraktikum

CSPP : Introduction to Object-Oriented Programming

File Input/Output. Introduction to Computer Science I. Overview (1): Overview (2): CSE 1020 Summer Bill Kapralos. Bill Kapralos.

Programming Languages and Techniques (CIS120)

Input & Output in Java. Standard I/O Exception Handling

File Input and Output Review CSC 123 Fall 2018 Howard Rosenthal

Java How to Program, 9/e. Copyright by Pearson Education, Inc. All Rights Reserved.

Example: Copying the contents of a file

Objec-ves JAR FILES. Jar files. Excep-ons. Files Streams. Ø Wrap up Ø Why Excep-ons? 9/30/16. Oct 3, 2016 Sprenkle - CSCI209 1

Objec&ves STANDARD ERROR. Standard Error Streams. Ø Byte Streams Ø Text Streams 10/5/16. Oct 5, 2016 Sprenkle - CSCI209 1

I/O Streams. COMP 202 File Access. Standard I/O. I/O Stream Categories

Java in 21 minutes. Hello world. hello world. exceptions. basic data types. constructors. classes & objects I/O. program structure.

Files and IO, Streams. JAVA Standard Edition

CS5000: Foundations of Programming. Mingon Kang, PhD Computer Science, Kennesaw State University

DM550 / DM857 Introduction to Programming. Peter Schneider-Kamp

File Processing in Java

Computer Science is...

10/7/15. MediaItem tostring Method. Objec,ves. Using booleans in if statements. Review. Javadoc Guidelines

Software 1 with Java. The java.io package. Streams. Streams. Streams. InputStreams

FILE I/O. CS302 Introduction to Programming University of Wisconsin Madison Lecture 27. By Matthew Bernstein

Software Practice 1 - File I/O

Classes Basic Overview

Chapter 10. IO Streams

Dining philosophers (cont)

Check out how to use the random number generator (introduced in section 4.11 of the text) to get a number between 1 and 6 to create the simulation.

Starting Out with Java: From Control Structures Through Objects Sixth Edition

Transcription:

Java Input/Output 11 April 2013 OSU CSE 1

Overview The Java I/O (Input/Output) package java.io contains a group of interfaces and classes similar to the OSU CSE components SimpleReader and SimpleWriter component families Except that java.io is far more general, configurable, and powerful (and messy) Hence, the names SimpleReader and SimpleWriter 11 April 2013 OSU CSE 2

I/O Streams An input/output stream is a (conceptually not necessarily finite) series of data items An input stream is a flow of data items from a source to a program The program reads from the source (or from the stream) An output stream is a flow of data items from a program to a destination The program writes to the destination (or to the stream) 11 April 2013 OSU CSE 3

Input Streams input stream program source single data item 11 April 2013 OSU CSE 4

Input Streams input stream program source single data item Source may be the keyboard, a file on disk, a physical device, another program, even an array or String in the same program. 11 April 2013 OSU CSE 5

Output Streams program output stream single data item destination 11 April 2013 OSU CSE 6

Output Streams program output stream single data item destination Destination may be the console window, a file on disk, a physical device, another program, even an array or String in the same program. 11 April 2013 OSU CSE 7

Part I: Beginner s Guide This part is essentially a how-to guide for using java.io that assumes knowledge of the OSU CSE components SimpleReader and SimpleWriter component families 11 April 2013 OSU CSE 8

Keyboard Input (SimpleReader) Here s some code in main to read input from the keyboard, using SimpleReader: public static void main(string[] args) { SimpleReader input = new SimpleReader1L(); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 9

Keyboard Advice (except Input for the (SimpleReader) simplest programs): to guard against the user entering unexpected input, read a line at Here s a time into some a String code and in then main parse to read input it to see whether it looks like expected. from the keyboard, using SimpleReader: public static void main(string[] args) { SimpleReader input = new SimpleReader1L(); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 10

Overview of java.io Input Readable Closeable Reader InputStream- Reader BufferedReader FileReader There are more classes and interfaces not discussed here! 11 April 2013 OSU CSE 11

Keyboard Input (java.io) Here s some code in main to read input from the keyboard, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 12

Keyboard Input (java.io) Some methods in java.io throw exceptions (discussed later) under certain circumstances, and you either Here s need to some catch code them or in let main them to read input propagate up the call chain, like this. from the keyboard, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 13

Keyboard Input (java.io) The variable System.in is a Java standard stream (discussed later), so you may use it without declaring it; but it is Here s a byte stream some (discussed code in main later), so to read input you want to wrap it from the keyboard, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 14

Keyboard Input (java.io) in a character stream (discussed later) like this Here s some code in main to read input from the keyboard, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 15

Keyboard Input (java.io) and then you want to wrap that character stream in a buffered stream Here s (discussed some later), code like this, in main so to read input from the keyboard, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 16

Keyboard Input (java.io) you can read one line at a time into a String, like this. Here s some code in main to read input from the keyboard, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 17

Keyboard Input (java.io) Here s some code rather in than main interface to read types. input from the keyboard, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); The declared types of variables when you use java.io are class types 11 April 2013 OSU CSE 18

Keyboard This Input technique (java.io)to of slightly extending Here s some code in main to read input from the keyboard, called using the decorator java.io: pattern. public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); input.close(); features or capabilities of an object by wrapping it inside another object is a popular object-oriented design pattern 11 April 2013 OSU CSE 19

An Alternative (java.util) An attractive alternative to using java.io.bufferedreader is to use java.util.scanner Important difference: no IOExceptions can be raised, so you don t need to worry about catching or throwing them Features for parsing input are powerful, e.g., the use of regular expressions to describe delimiters between data items 11 April 2013 OSU CSE 20

An Alternative (java.util) Here s some code in main to read input from the keyboard, using Scanner: public static void main(string[] args) { Scanner input = new Scanner(System.in); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 21

An Now, main Alternative does not declare (java.util) that it throws IOException; in this sense it is similar to using SimpleReader. Here s some code in main to read input from the keyboard, using Scanner: public static void main(string[] args) { Scanner input = new Scanner(System.in); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 22

An Alternative (java.util) Notice that initialization does not involve layers of wrapping of one object inside another; Scanner also has different constructors Here s some so it can code be used in main with files. to read input from the keyboard, using Scanner: public static void main(string[] args) { Scanner input = new Scanner(System.in); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 23

An Alternative (java.util) The method for reading a line into a String has a different name than for BufferedReader: it is nextline (like Here s some SimpleReader). code in main to read input from the keyboard, using Scanner: public static void main(string[] args) { Scanner input = new Scanner(System.in); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 24

End-of-Stream (SimpleReader) public static void main(string[] args) { SimpleReader input = new SimpleReader1L(); while (!input.ateos()) { s = input.nextline(); input.close(); 11 April 2013 OSU CSE 25

End-of-Stream (SimpleReader) public static void main(string[] args) { SimpleReader input = new SimpleReader1L(); while (!input.ateos()) { s = input.nextline(); input.close(); SimpleReader has a method to report at end-of-stream, and it can tell you this before you read past the end of the input stream ; similarly, Scanner has method hasnext. 11 April 2013 OSU CSE 26

End-of-Stream (java.io) public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); while (s!= null) { s = input.readline(); input.close(); 11 April 2013 OSU CSE 27

End-of-Stream (java.io) public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); while (s!= null) { s = input.readline(); input.close(); BufferedReader has no method to detect when you cannot read any more input, so you can check it only after you try to read past the end of the stream. 11 April 2013 OSU CSE 28

End-of-Stream (java.io) public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); String s = input.readline(); while (s!= null) { s = input.readline(); input.close(); Before checking again, you must try to read another line. 11 April 2013 OSU CSE 29

File Input (SimpleReader) Here s some code in main to read input from a file, using SimpleReader: public static void main(string[] args) { SimpleReader input = new SimpleReader1L("data/test.txt"); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 30

File Input (SimpleReader) SimpleReader has a constructor from a String, which is the name of the file Here s you some want to code read from. in main to read input from a file, using SimpleReader: public static void main(string[] args) { SimpleReader input = new SimpleReader1L("data/test.txt"); String s = input.nextline(); input.close(); 11 April 2013 OSU CSE 31

File Input (java.io) Here s some code in main to read input from a file, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new FileReader("data/test.txt")); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 32

File Input (java.io) Now, you wrap a BufferedReader around a FileReader (which has a constructor from a String, which is the name Here s of the some file you code want to in read main from). to read input from a file, using java.io: public static void main(string[] args) throws IOException { BufferedReader input = new BufferedReader( new FileReader("data/test.txt")); String s = input.readline(); input.close(); 11 April 2013 OSU CSE 33

Independence From Source With SimpleReader, BufferedReader, and Scanner used as shown, the source is identified in a constructor call, and subsequent code to read data is independent of the source This is a really handy feature in many software maintenance situations But notice: methods differ between BufferedReader and the other two! 11 April 2013 OSU CSE 34

Console Output (SimpleWriter) Here s some code in main to write output to the console, using SimpleWriter: public static void main(string[] args) { SimpleWriter output = new SimpleWriter1L(); output.print("foo"); output.println(" and bar"); output.close(); 11 April 2013 OSU CSE 35

Console Both print and Output println are (SimpleWriter) available, and the latter should be used to output the line separator string for the current Here s platform some (i.e., the code system in the main Java to write output program is running on). to the console, using SimpleWriter: public static void main(string[] args) { SimpleWriter output = new SimpleWriter1L(); output.print("foo"); output.println(" and bar"); output.close(); 11 April 2013 OSU CSE 36

Overview of java.io Output Closeable Flushable Appendable Writer OutputStream- Writer BufferedWriter PrintWriter FileWriter There are more classes and interfaces not discussed here! 11 April 2013 OSU CSE 37

Console Output (java.io) Here s some code in main to write output to the console, using java.io: public static void main(string[] args) { System.out.print("foo"); System.out.println(" and bar"); 11 April 2013 OSU CSE 38

Console Output (java.io) System.out is another Java standard stream (discussed later), which you neither declare nor close; both print Here s and println some code are available. in main to write output to the console, using java.io: public static void main(string[] args) { System.out.print("foo"); System.out.println(" and bar"); 11 April 2013 OSU CSE 39

Console Output (java.io) It is fine to use System.out for console output, but there are potential problems using (unwrapped) System.in for Here s some keyboard code input. in main to write output to the console, using java.io: public static void main(string[] args) { System.out.print("foo"); System.out.println(" and bar"); 11 April 2013 OSU CSE 40

File Output (SimpleWriter) Here s some code in main to write output to a file, using SimpleWriter: public static void main(string[] args) { SimpleWriter output = new SimpleWriter1L("data/test.txt"); output.print("foo"); output.println(" and bar"); output.close(); 11 April 2013 OSU CSE 41

File Output (SimpleWriter) SimpleWriter has a constructor from a String, which is the name of the file Here s you some want code to write in to. main to write output to a file, using SimpleWriter: public static void main(string[] args) { SimpleWriter output = new SimpleWriter1L("data/test.txt"); output.print("foo"); output.println(" and bar"); output.close(); 11 April 2013 OSU CSE 42

File Output (java.io) Here s some code in main to write output to a file, using java.io: public static void main(string[] args) throws IOException { PrintWriter output = new PrintWriter( new BufferedWriter ( new FileWriter("data/test.txt"))); output.print("foo"); output.println(" and bar"); output.close(); 11 April 2013 OSU CSE 43

File Output (java.io) PrintWriter is needed for convenient output, and is added as yet another wrapper to Here s some get print code and in println. main to write output to a file, using java.io: public static void main(string[] args) throws IOException { PrintWriter output = new PrintWriter( new BufferedWriter ( new FileWriter("data/test.txt"))); output.print("foo"); output.println(" and bar"); output.close(); 11 April 2013 OSU CSE 44

Independence From Destination With SimpleWriter, System.out, and PrintWriter used as shown, the destination is identified in a constructor call, and subsequent code to write data is independent of the destination This is a really handy feature in many software maintenance situations Unlike input, methods (print and println) for all three have same names and behaviors 11 April 2013 OSU CSE 45

Part II: Some Details There are way too many details about java.io to cover here; see the Javadoc and the Java Tutorials trail on Basic I/O A few details previously promised 11 April 2013 OSU CSE 46

IOException A general discussion of exceptions in Java is to come later still, but for now A number of java.io constructors and methods might throw (raise) an IOException Examples: files to be used as sources/ destinations may not exist, may not be readable and/or writeable by the user of the program, etc. 11 April 2013 OSU CSE 47

Try-Catch As an alternative to letting an exception propagate up the call chain to the client (as in the earlier examples), you may deal with an IOException by catching (handling) it, e.g.: Report that there has been an I/O error and exit gracefully Try to recover from it (which is usually much harder) 11 April 2013 OSU CSE 48

Example Here s the overall structure of an example main in a simple application that reads input from a file, using java.io: public static void main(string[] args) { // Code to open file // Code to read from file // Code to close file 11 April 2013 OSU CSE 49

Example: Opening a File public static void main(string[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read from file // Code to close file 11 April 2013 OSU CSE 50

Example: Opening a File public static void main(string[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read Now, from main file does not declare that it // Code to close file throws IOException if it (always) catches the exception. 11 April 2013 OSU CSE 51

Example: Opening a File public static void main(string[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read from file // Code to close file This variable must be declared (but not initialized) here, so it is in scope later where the code reads from the file if the file is opened successfully. 11 April 2013 OSU CSE 52

Example: Opening a File public static void main(string[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read from file // Code to close file might throw an IOException The try block contains the code that 11 April 2013 OSU CSE 53

Example: Opening a File public static void main(string[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read from file // Code to close file e.g., if the file does not exist. which this constructor might throw, 11 April 2013 OSU CSE 54

Example: Opening a File public static void main(string[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read from file // Code to close file The catch block states the exception it handles, and is executed iff code in the try block throws that exception (which is called e in the catch block). 11 April 2013 OSU CSE 55

Example: Opening a File public static void main(string[] args) { BufferedReader input; try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read from file // Code to close file Here, the code prints an error message to System.err, another Java standard stream (discussed later), and aborts main by returning from it. 11 April 2013 OSU CSE 56

Example: Opening a File In either case (even after the catch block, if it did not return as it does here), execution proceeds with the next public static void main(string[] args) { BufferedReader input; statement. try { input = new BufferedReader( new FileReader("data/test.txt")); catch (IOException e) { System.err.println("Error opening file"); return; // Code to read from file // Code to close file 11 April 2013 OSU CSE 57

Example: Reading From a File public static void main(string[] args) { // Code to open file try { String s = input.readline(); while (s!= null) { s = input.readline(); catch (IOException e) { System.err.println("Error reading from file"); // Code to close file 11 April 2013 OSU CSE 58

Example: Reading We need this try-catch From because a File the method readline might throw an IOException. public static void main(string[] args) { // Code to open file try { String s = input.readline(); while (s!= null) { s = input.readline(); catch (IOException e) { System.err.println("Error reading from file"); // Code to close file 11 April 2013 OSU CSE 59

Example: As Reading before, even after From the catch a File block (which in this case does not end with a return), execution proceeds with the public static void main(string[] args) { // Code to open file next statement. try { String s = input.readline(); while (s!= null) { s = input.readline(); catch (IOException e) { System.err.println("Error reading from file"); // Code to close file 11 April 2013 OSU CSE 60

Example: Closing a File public static void main(string[] args) { // Code to open file // Code to read from file try { input.close(); catch (IOException e) { System.err.println("Error closing file"); 11 April 2013 OSU CSE 61

Example: Closing a File We need this try-catch because even the method close might throw an IOException. public static void main(string[] args) { // Code to open file // Code to read from file try { input.close(); catch (IOException e) { System.err.println("Error closing file"); 11 April 2013 OSU CSE 62

The Standard Streams The utility class System in java.lang declares three standard streams: System.in System.out System.err You do not declare, open, or close these streams; but you can always use them without worrying about exceptions 11 April 2013 OSU CSE 63

The Standard Streams The utility class System in java.lang declares three standard streams: System.in System.out System.err A utility class is a class that cannot be instantiated, i.e., there is no public You do not declare, constructor; open, it is not or close a type, so these you streams; but you can always use them without worrying about exceptions cannot create an object of that type. 11 April 2013 OSU CSE 64

The Standard Streams The utility class System.err in java.lang is intended for declares three standard streams: System.in System.out System.err error messages; System.out is intended for normal output. You do not declare, open, or close these streams; but you can always use them without worrying about exceptions 11 April 2013 OSU CSE 65

Byte and Character Streams Java has two categories of streams: Byte streams are streams of 8-bit bytes This is a kind of low-level I/O that you rarely need Character streams are streams of Unicode characters This is preferred for text I/O because it accounts for the local character set and supports internationalization with little additional effort Best practice is to use character streams with textual I/O 11 April 2013 OSU CSE 66

Buffered Streams Buffered streams minimize disk access for reading/writing files, and generally have performance advantages over unbuffered streams Best practice is to wrap input and output character streams to create buffered versions This is done with BufferedReader and BufferedWriter, as seen earlier 11 April 2013 OSU CSE 67

Files and Paths The File class (an original part of Java) and the Path interface (new in Java 1.7) allow you to manipulate directories and files and the paths to them in the file system, e.g.: Check file existence and permissions, create files and set permissions, delete files, etc. See the Java Tutorials: Basic I/O and the Java libraries Javadoc for details 11 April 2013 OSU CSE 68

Resources The Java Tutorials: Basic I/O http://docs.oracle.com/javase/tutorial/essential/io/index.html 11 April 2013 OSU CSE 69