Software 1. Java I/O

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

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

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

Software 1. תרגול 9 Java I/O

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

תוכנה 1 4 תרגול מס' שימוש במחלקות קיימות: קלט/פלט )IO(

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

The Java I/O System. Binary I/O streams (ASCII, 8 bits) The decorator design pattern Character I/O streams (Unicode, 16 bits)

7 Streams and files. Overview. Binary data vs text. Binary data vs text. Readers, writers, byte streams. input-output

Exceptions and Working with Files

JOSE LUIS JUAREZ VIVEROS com) has a. non-transferable license to use this Student Guide

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

Example: Copying the contents of a file

CSC 1214: Object-Oriented Programming

CS 251 Intermediate Programming Java I/O Streams

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

Darshan Institute of Engineering & Technology for Diploma Studies

Chapter 4 Java I/O. X i a n g Z h a n g j a v a c o s q q. c o m

Princeton University COS 333: Advanced Programming Techniques A Subset of Java

The I/O Package. THE Java platform includes a number of packages that are concerned with the CHAPTER20

I/O Streams. Object-oriented programming

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

Objec&ves. Review. Standard Error Streams

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

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

CSD Univ. of Crete Fall Files, Streams, Filters

System.out.format("The square root of %d is %f.%n", i, r);

输 入输出相关类图. DataInput. DataOutput. java.lang.object. FileInputStream. FilterInputStream. FilterInputStream. FileOutputStream

Writing usable APIs in practice

Chapter 10. IO Streams

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

Object-Oriented Programming Design. Topic : Streams and Files

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

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

Java IO and C++ Streams

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

Streams. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

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

PIC 20A Streams and I/O

CSB541 Network Programming 網路程式設計. Ch.2 Streams 吳俊興國立高雄大學資訊工程學系

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

Introduction to Java

Writing usable APIs in practice

Pieter van den Hombergh Richard van den Ham. March 13, 2018

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

pre-emptive non pre-emptive

Software Development & Education Center. Java Platform, Standard Edition 7 (JSE 7)

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

Core Java Contents. Duration: 25 Hours (1 Month)

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

Java Input/Output. 11 April 2013 OSU CSE 1

Object Oriented Design with UML and Java. PART VIII: Java IO

How to access your database from the development environment. Marco Ronchetti Università degli Studi di Trento

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE

Dining philosophers (cont)

1.00 Lecture 30. Sending information to a Java program

Basic Java IO Decorator pattern Advanced Java IO. Java IO - part 2 BIU OOP. BIU OOP Java IO - part 2

IT101. File Input and Output

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

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE

Algorithms. Produced by. Eamonn de Leastar

10.1 Overview 162 CHAPTER 10 CHARACTER STREAMS

File. Long term storage of large amounts of data Persistent data exists after termination of program Files stored on secondary storage devices

Files and Streams

C17: I/O Streams and File I/O

Lecture 11.1 I/O Streams

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

Index. CalculatorEngine class, 40, 44 CalculatorFrame class, 48 CalculatorInterface class, 45

CPS122 Lecture: Input-Output

Chapter 8: Files and Security

Chapter 17 Binary I/O. Liang, Introduction to Java Programming, Eleventh Edition, (c) 2017 Pearson Education, Inc. All rights reserved.

String temp [] = {"a", "b", "c"}; where temp[] is String array.

Object Oriented Software Design

Object Oriented Software Design

Object-Oriented Programming in the Java language

Experiment No: Group B_4

Programmierpraktikum

Chapter 10 Input Output Streams

1993: renamed "Java"; use in a browser instead of a microwave : Sun sues Microsoft multiple times over Java

Performing input and output operations using a Byte Stream

CN208 Introduction to Computer Programming

ITI Introduction to Computer Science II

Software Practice 1 - File I/O

needs to be reliable, easy to change, retarget efficiency is secondary implemented as interpreter, with virtual machine

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

Job Migration. Job Migration

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

CS193j, Stanford Handout #26. Files and Streams

I/O streams. Byte Streams Character Streams InputStream ByteArrayInputStream FileInputStream FilterInputStream

I/O Streams in Java. Produced by: Eamonn de Leastar Dr. Siobhán Drohan

Java Input/Output Streams

The Decorator Pattern. Design Patterns In Java Bob Tarr

The Java Series IO, Serialization and Persistence. The Java Series. IO, Serialization and Persistence Raul RAMOS / CERN-IT User Support Slide 1

FILE I/O IN JAVA. Prof. Chris Jermaine

F1 A Java program. Ch 1 in PPIJ. Introduction to the course. The computer and its workings The algorithm concept

CPS122 Lecture: Input-Output

CS112 Lecture: Streams

Techniques of Java Programming: Streams in Java

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

Transcription:

Software 1 Java I/O 1

The java.io package The java.io package provides: Classes for reading input Classes for writing output Classes for manipulating files Classes for serializing objects 2

Streams A stream is a sequential flow of data Streams are one-way streets. Input streams are for reading Output streams are for writing File Memory Socket Source Target Input Stream Output Stream read write Program Program 3

Streams Usage Flow: open a stream while more information Read/write information close the stream All streams are automatically opened when created. 4

Streams There are two types of streams: Byte streams for reading/writing raw bytes Character streams for reading/writing text Class Name Suffix Convention: Byte Character Input InputStream Reader Output OutputStream Writer 5

InputStreams ByteArrayInputStream InputStream abstract super-class FileInputStream FilterInputStream ObjectInputStream PipedInputStream SequenceInputStream DataInputStream BufferedInputStream PushbackInputStream - read from data sinks - perform some processing 6

OutputStreams ByteArrayOutputStream OutputStream abstract super-class FileOutputStream FilterOutputStream ObjectOutputStream PipedOutputStream BufferedOutputStream DataOutputStream PrintStream - write to data sinks - perform some processing 7

Readers BufferedReader LineNumberReader Reader abstract super-class CharArrayReader FilterReader InputStreamReader PipedReader StringReader PushbackReader FileReader - read from data sinks - perform some processing 8

Writers Writer abstract super-class BufferedWriter CharArrayWriter FilterWriter OutputStreamWriter PipedWriter PrintWriter FileWriter - write to data sinks - perform some processing StringWriter 9

Terminal I/O The System class provides references to the standard input, output and error streams: InputStream stdin = System.in; PrintStream stdout = System.out; PrintStream stderr = System.err; 10

InputStream Example Reading a single byte from the standard input stream: an int with a byte information try { int value = System.in.read();... } catch (IOException e) { }... is thrown in case of an error returns -1 if a normal end of stream has been reached 11

InputStream Example Another implementation: end-ofstream condition try { int value = System.in.read(); if (value!= -1) { }... byte bvalue = (byte) value; } catch (IOException e) {...} casting 12

Character Stream Example public static void main(string[] args) { try { FileReader in = new FileReader("in.txt"); FileWriter out = new FileWriter("out.txt"); int c; while ((c = in.read())!= -1) { out.write(c); } in.close(); out.close(); } } catch (IOException e) { // Do something } 13

Stream Wrappers Some streams wrap others streams and add new features. A wrapper stream accepts another stream in its constructor: DataInputStream din = new DataInputStream(System.in); double d = din.readdouble(); readboolean() readfloat() din DataInputStream System.in InputStream 14

Stream Wrappers (cont.) Reading a text string from the standard input: try { InputStreamReader in = new InputStreamReader(System.in); BufferedReader bin = new BufferedReader(in); String text = bin.readline();... } catch (IOException e) {...} readline bin in BufferedReader InputStreamReader System.in InputStream

The File Class A utility class for file or directory properties (name, path, permissions, etc.) Performs basic file system operations: removes a file: delete() creates a new directory: mkdir() checks if the file is writable: canwrite() creates a new file: createnewfile() No direct access to file data Use file streams for reading and writing 16

The File Class Constructors Using a full pathname: File f = new File("/doc/foo.txt"); File dir = new File("/doc/tmp"); Using a pathname relative to the current directory defined in user.dir: File f = new File( foo.txt ); Note: Use System.getProperty( user.dir ) to get the value of user.dir (Usually the default is the current directory of the interpreter. In Eclipse it is the project s directory) 17

The File Class Constructors (cont) File f = new File("/doc","foo.txt"); directory pathname file name File dir = new File("/doc"); File f = new File(dir, "foo.txt"); A File object can be created for a nonexisting file or directory Use exists() to check if the file/dir exists 18

The File Class Pathnames Pathnames are system-dependent "/doc/foo.txt" (UNIX format) "D:\doc\foo.txt" (Windows format) On Windows platform Java excepts path names either with '/' or '\' The system file separator is defined in: File.separator File.separatorChar 19

The File Class Directory Listing Printing all files and directories under a given directory: public static void main(string[] args) { File file = new File(args[0]); } String[] files = file.list(); for (int i=0 ; i< files.length ; i++) { System.out.println(files[i]); } 20

The File Class Directory Listing (cont.) Printing all files and directories under a given directory with ".txt" suffix: public static void main(string[] args) { File file = new File(args[0]); FilenameFilter filter = new SuffixFileFilter(".txt"); } String[] files = file.list(filter); for (int i=0 ; i<files.length ; i++) { System.out.println(files[i]); } 21

The File Class Directory Listing (cont.) public class SuffixFileFilter implements FilenameFilter { private String suffix; public SuffixFileFilter(String suffix) { this.suffix = suffix; } } public boolean accept(file dir, String name) { return name.endswith(suffix); } 22

The Scanner Class Breaks its input into tokens using a delimiter pattern (matches whitespace by default) The resulting tokens may then be converted into values try { Scanner s = new Scanner(System.in); int anint = s.nextint(); float afloat = s.nextfloat(); String astring = s.next(); String aline = s.nextline(); } } catch (IOException e) { // Do something 23

The Scanner Class Works with any type of textual input We can change the delimiter and other options Another example: String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close(); 1 2 red blue Regular expression 24

Object Serialization A mechanism that enable objects to be: saved and restored from byte streams persistent (outlive the current process) Useful for: persistent storage sending an object to a remote computer 25

The Default Mechanism The default mechanism includes: The Serializable interface The ObjectOutputStream The ObjectInputStream Serializable Object write ObjectOutputStream Storage/ Network Serializable Object ObjectInputStream read 26

The Serializable Interface Objects to be serialized must implement the java.io.serializable interface An empty interface Most objects are Serializable: Primitives, Strings, GUI components etc. Subclasses of Serializable classes are also Serializable 27

Recursive Serialization Can we serialize a Foo object? public class Foo implements Serializable { private Bar bar; Foo } public class Bar { } Bar bar Bar No, since Bar is not Serializable Solution: Implement Bar as Serializable Mark the bar field of Foo as transient 28

Writing Objects Writing a HashMap object (map) to a file*: try { FileOutputStream fileout = new FileOutputStream("map.s"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeobject(map); } catch (Exception e) {...} * HashMap is Serializable 29

Reading Objects try { FileInputStream filein = new FileInputStream("map.s"); ObjectInputStream in = new ObjectInputStream(fileIn); Map h = (Map)in.readObject(); } catch (Exception e) {...} 30