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

Size: px
Start display at page:

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

Transcription

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

2 Outline 2.1 Output Streams 2.2 Input Streams 2.3 Filter Streams 2.4 Readers and Writers 2

3 Java I/O Built on streams I/O in Java is organized differently than it is in most other languages Input streams read data; output streams write data Different stream classes provided, same basic methods Examples File stream: Java.io.FileInputStream Network streams: sun.net.telnetoutputstream After a stream is created, you can often ignore the details of exactly what it is you re reading or writing Filter streams can be chained To modify the data as it s read or written i.e. encrypting, compressing, converting, encoding Readers and writers can be chained to input and output streams to allow programs to read and write text (i.e., characters) rather than bytes Streams are Synchronous Wait for the data to be read or written before doing anything else I/O can be slow, so try to put I/O in its own thread for doing anything else Nonblocking I/O also offered using channels and buffers (Ch. 11) 3

4 2.1 Output Streams java.io.outputstream: the superclass of all classes representing an output stream of bytes int b: only eight bits (0-255) are placed! Subclass examples: FileOutputStream, TelnetOutputStream ByteArrayOutputStream: write data into an expandable byte array 4

5 Example: Character-Generator Server Given The printable ASCII characters are those between 33 and 126 numberofcharactersperline = 72 Output: multiple lines of printable ASCII characters like this Infinite loop 5

6 Sample Code 1: byte-by-byte The character-generator server will terminate only when the client closes the connection. The Java code will see this as an IOException Bytes are written onto out one at a time How many times are write() called to output a line? 6

7 Sample Code 2: line-by-line write(byte[] data): write a line of byte array 7

8 Buffered Stream in Java BufferedOutputStream and BufferedWriter support buffered output directly Remember to flush the output stream by the flush() method! 8

9 Initialize and Close Remember to close a stream to prevent resource leak Dispose pattern: for any object that needs to be cleaned up before it s garbage collected Java6+ Avoid NullPointerExceptions Java 7+: try with resources 9

10 2.2 Input Streams java.io.inputstream: the superclass of all classes representing an input stream of bytes A single byte (0-255) or EndOfStream (-1) Fill input array starting at offset up to length bytes Subclass examples: Skip over data without reading FileInputStream, TelnetInputStream ByteArrayInputStream: read data from an array of bytes cast to byte required for int return of read() Note: byte is signed (-128 to 127); Beware of casting back to int 10

11 Java Primitive Data Types Type Internal Range byte 8-bit signed 2 s complement -128 ~ 127 short 16-bit signed 2 s complement ~ int 32-bit signed 2 s complement ~ long 64-bit signed 2 s complement ~ float 32-bit IEEE 754 floating point ±1.4E-45~± E+38 double 64-bit IEEE 754 floating point ±4.9E-324~ ± E+308 char single 16-bit Unicode character '\u0000 ~'\uffff' (Unicode) boolean 8-bit, two values true, false Java doesn t support unsigned integers natively For simplicity Further: Number and String classes String: a sequence of characters 11

12 Number class in the java.lang package The Java platform provides wrapper classes for each of the primitive data types done by the compiler if you use a primitive where an object is expected, the compiler boxes the primitive in its wrapper class for you Similarly, if you use a number object when a primitive is expected, the compiler unboxes the object for you Three reasons to use a Number object rather than a primitive As an argument of a method that expects an object (often used when manipulating collections of numbers) To use constants defined by the class, such as MIN_VALUE and MAX_VALUE, that provide the upper and lower bounds of the data type. To use class methods for converting values to and from other primitive types for converting to and from strings, and for converting between number systems (decimal, octal, hexadecimal, binary) 12

13 Read Less Problem of (Network) Streams Reading N bytes from a network connection may return less bytes Data with no more than 1024 bytes are possible Read loop is required to guarantee the expected length of bytes Potential Issue: Hang (loop) if 1024 bytes might never arrive Read loop with testing Read exactly available 13

14 Additional Methods of InputStream Class: Marking and Resetting mark() marks the current position in this input stream, and subsequent call to reset() repositions this stream at the last marked position, so that subsequent read() can re-read the same up to readaheadlimit bytes marksupported() tests if the input stream supports mark() and reset() If you try to reset too far back, an IOException is thrown There can be only one mark in a stream at any given time Marking a second location erases the first mark The only input stream classes in java.io that always support marking are BufferedInputStream and ByteArrayInputStream Author s opinion: very poor design of Java More streams don t support these, so it s better to place these three methods in a separate interface rather in the InputStream class 14

15 2.3 Filter Streams InputStream and OutputStream are fairly raw/primitive classes Java provides a number of filter classes you can attach to raw streams to translate the raw bytes to and from these and other formats Two versions of filters The filter streams Still work primarily with raw data as bytes: by compressing the data or interpreting it as binary numbers i.e. System.out The readers and writers Handle the special case of text in a variety of encodings such as UTF-8 and ISO Filters are organized in a chain. Each link in the chain Receives data from the previous filter or stream, and Passes the data along to the next link in the chain 15

16 Example: Flow of Data through a Chain of Filters Finally, the text is read into the application and processed An InputStreamReader converts the decompressed data to Unicode text A GZIPInputStream decompresses the deciphered data A CipherInput Stream decrypts the data. A BufferedInputStream buffers the data to speed up the entire process A compressed, encrypted text file arrives from the local network interface, where native code presents it to the undocumented TelnetInputStream 16

17 Chaining Filters Together Filters are connected to streams by their constructors Example: buffers input from the file data.txt Methods of both fin and bin can be used, but you should only use the last filter in the chain to do the actual reading or writing However, sometimes you may need to use the methods of multiple filters in a chain Example: construct one stream directly inside another Connection is permanent Filters cannot be disconnected from a stream 17

18 Buffered Streams The BufferedOutputStream class Stores written data in a buffer (a protected byte array field named buf) until the buffer is full or the stream is flushed Then it writes the data onto the underlying output stream all at once A single write of many bytes is almost always much faster than many small writes that add up to the same thing Especially true of network connections because each TCP segment or UDP packet carries a finite amount of overhead, generally about 40 bytes worth The BufferedInputStream class When one of the stream s read() methods is called, it first tries to get the requested data from the buffer Only when the buffer runs out of data does the stream read from the underlying source It reads as much data as it can from the source into the buffer, whether it needs all the data immediately or not Buffering can substantially improve performance for reading files from a local disk, but the gain is less obvious on network connections where the bottleneck is often the speed at which the network can deliver data 18

19 Constructors of Buffered Streams Arguments of two constructors The underlying stream The number of bytes in the buffer Default values: 2048 bytes for an input stream and 512 bytes for an output stream For network connections, it s hard to predict and it varies You want something a little larger than the typical packet size» TCP/IP will chunk or fragment data into suitable size for underlying links Faster, higher-bandwidth networks tend to use larger packets Beware of using buffered streams read() methods of BufferedInputStream Return only when the array or subarray has been completely filled the end of stream is reached, or the underlying stream would block on further reads Most input streams read from the underlying stream only once It is essential to flush the BufferedOutputStream when you reach a point at which the data needs to be sent 19

20 PrintStream Adds the ability to Print representations of various data values to another output stream System.out is a PrintStream, a filter output stream 9 overloaded print() methods and 10 overloaded println() methods Println(): append a platform-dependent line separator» Linefeed (\n) on Unix, a carriage return (\r) on Mac OS 9, and (\r\n) on Windows Most network protocols such as HTTP and Gnutella also terminate lines with \r\n There are no problems with println() for Java programs on Windows, but fail on Unix and the Mac Assumes the default encoding of the platform on which it s running The expected encodings may be mismatched between the server and the clients Never throws an IOException The code must explicitly check flag using the checkerror() method after every call Not good for network programs that must be prepared to deal with unexpected interruptions in the flow of data Be created to flush automatically The flush method is automatically invoked after a byte array is written, one of the println methods is invoked, or a newline character or byte is written 20

21 Data Streams The DataInputStream and DataOutputStream classes Providing methods for reading and writing Java s primitive data types and strings in a binary format Intended for exchanging data between two different Java programs through a network connection, a data file, a pipe, or some other intermediary All data is written in big-endian format Two s-complement integers IEEE 754 floating-point numbers A single byte Boolean with the value 0 for false and 1 for true Unicode For exchanging UTF-8 text with all other software, you should use an InputStreamReader with the appropriate encoding 21

22 DataOutputStream Class Match DataInputStream writechars(): writing each character in turn as a two-type, big-endian Unicode character writebytes(): writes only the least significant byte of each character Information will be lost for any string with characters from outside the Latin-1 character set writeutf(): encodes the string itself in a variant of the UTF-8 encoding of Unicode Subtly incompatible with most non-java software Should be used only for exchanging data with other Java program For exchanging UTF-8 text with all other software, should use an InputStreamReader with appropriate encoding 22

23 DataInputStream Class 9 methods match DataOutputStream 2 methods to read unsigned bytes and unsigned shorts 2 methods to repeatedly read data until the requested bytes have been read. If not enough, an IOException is thrown readline() to read a line of text is provided, but deprecated Do not always recognize a single carriage return as ending a line Handled by the readline() method of the BufferedReader class instead 23

24 2.4 Readers and Writers Java provides an almost complete mirror of the I/O stream class hierarchy designed for working with characters instead of bytes Many programmers have a bad habit of writing code as if all text were ASCII or at least in the native encoding (i.e. Big-5) of the platform Java s native character set is the UTF-16 encoding of Unicode java.io.reader and java.io.writer: two abstract superclasses for reading and writing characters Like java.io.inputstream and java.io.outputstream Never used directly Two most important concrete subclass: InputStreamReader and OutputStreamWriter Translate between bytes and Unicode characters Several raw reader and writer classes FileReader/FileWriter: work with files StringReader/StringWriter, CharArrayReader/CharArrayWriter: work inside Java 24

25 Writers The Writer class mirrors the java.io.outputstream class A subclass must override the three base methods write(char [] text, int offset, int length), flush(), close() Various write() methods: given a Writer object w The exact output depends on the encoding w uses Big-endian UTF E F B Little-endian UTF-16 4E F B 00 Latin-1,UTF-8 4E F726B 25

26 OutputStreamWriter The most important concrete subclass of Writer Receives characters from a Java program Converts these into bytes according to a specified encoding Writes them onto an underlying output stream Constructor: specifies the output stream and the encoding If no encoding is specified, the default encoding for the platform is used It s better to explicitly specify the character set It has only the usual Writer methods, and one getencoding() method to return the encoding of the object 26

27 Readers The Reader class mirrors the java.io.inputstream class A subclass must override the two base methods read(char [] text, int offset, int length), close() The read() method return a single Unicode character as an int with a value from 0 to 65,535 or -1 on end of stream New ready() method: returns a boolean indicating whether the reader may be read without blocking available() returns an int specifying a minimum number of bytes that may be read without blocking Since it s hard to determine the length for some character encodings 27

28 InputStreamReader The most important concrete subclass of Reader Reads bytes from an underlying input stream such as FileInputStream Converts these into characters according to a specified encoding Return them Constructor: specifies the input stream and the encoding If no encoding is specified, the default encoding for the platform is used If an unknown encoding is specified, an UnsupportedEncodingException is thrown Example: getmaccyrillicstring() converts MacCyrillic to Unicode 28

29 Filter Readers and Writers java.io.filterreader and java.io.filterwriter classes Additional character-oriented filters can be layered on InputStreamReader and OutputStreamWriter classes, which change the interface from a byteoriented interface to a character-oriented interface Subclasses perform specific filtering BufferedReader/BufferedWriter: use an internal array of chars as a buffer Similar to BufferedInputStream/BufferedOutputStream, but supporting encoding conversion and platform-dependent line-separator Constructors: If the size is not set, the default size of 8,192 characters is used readline() of BufferedReader: reads a single line of text and return it as astring newline() of BufferedWriter: inserts a platform-dependent line-separator string LineNumberReader: a buffered character-input stream that keeps track of line numbers PushbackReader: a character-stream reader that allows characters to be pushed back into the stream PrintWriter: replacement for PrintStream 29

30 getmaccyrillicstring() with BufferedReader getmaccyrillicstring() converts MacCyrillic to Unicode Un-buffered Buffered: run faster 30

31 PrintWriter A replacement for Java 1.0 s PrintStream class that properly handles multibyte character sets and international text Has an almost identical collection of methods to PrintStream New code should use PrintWriter instead of PrintStream 31

32 Summary Byte-oriented I/O (ASCII encoding assumed) java.io.outputstream (Abstract superclass): write sequence of bytes BufferedOutputStream: writing data in a buffer PrintStream: System.out FileOutputStream DataOutputStream: writing primitive data types and strings in a binary format java.io.inputstream (Abstract superclass) BufferedInputStream, FileInputStream, DataInputStream Character-oriented I/O (UTF-16 default encoding) java.io.writer (Abstract superclass) OutputStreamWriter FileWriter, StringWriter, CharArrayWriter BufferedWriter PrintWriter (replacement for PrintStream) java.io.reader (Abstract superclass) InputStreamReader FileReader, StringReader, CharArrayReader BufferedReader LineNumberReader: a buffered character-input stream that keeps track of line numbers PushbackReader: a character-stream reader that allows characters to be pushed back into the stream 32

Output Streams Input Streams Filter Streams Readers and Writers Object Streams and Serialization Introduction to Sockets

Output Streams Input Streams Filter Streams Readers and Writers Object Streams and Serialization Introduction to Sockets 3. Java I/O Revisited Output Streams Input Streams Filter Streams Readers and Writers Object Streams and Serialization Introduction to Sockets Java I/O A large part of what network programs do is simple

More information

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

09-1. CSE 143 Java GREAT IDEAS IN COMPUTER SCIENCE. Overview. Data Representation. Representation of Primitive Java Types. Input and Output. CSE 143 Java Streams Reading: 19.1, Appendix A.2 GREAT IDEAS IN COMPUTER SCIENCE REPRESENTATION VS. RENDERING 4/28/2002 (c) University of Washington 09-1 4/28/2002 (c) University of Washington 09-2 Topics

More information

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

Java How to Program, 9/e. Copyright by Pearson Education, Inc. All Rights Reserved. Java How to Program, 9/e Copyright 1992-2012 by Pearson Education, Inc. All Rights Reserved. Data stored in variables and arrays is temporary It s lost when a local variable goes out of scope or when

More information

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

Input, Output and Exceptions. COMS W1007 Introduction to Computer Science. Christopher Conway 24 June 2003 Input, Output and Exceptions COMS W1007 Introduction to Computer Science Christopher Conway 24 June 2003 Input vs. Output We define input and output from the perspective of the programmer. Input is data

More information

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

JOSE LUIS JUAREZ VIVEROS com) has a. non-transferable license to use this Student Guide Module 10 I/O Fundamentals Objectives Upon completion of this module, you should be able to: Write a program that uses command-line arguments and system properties Examine the Properties class Construct

More information

PIC 20A Streams and I/O

PIC 20A Streams and I/O PIC 20A Streams and I/O Ernest Ryu UCLA Mathematics Last edited: December 7, 2017 Why streams? Often, you want to do I/O without paying attention to where you are reading from or writing to. You can read

More information

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

COMP 213. Advanced Object-oriented Programming. Lecture 19. Input/Output COMP 213 Advanced Object-oriented Programming Lecture 19 Input/Output Input and Output A program that read no input and produced no output would be a very uninteresting and useless thing. Forms of input/output

More information

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

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 Chapter 4 Java I/O X i a n g Z h a n g j a v a c o s e @ q q. c o m Content 2 Java I/O Introduction File and Directory Byte-stream and Character-stream Bridge between b-s and c-s Random Access File Standard

More information

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

Lecture 22. Java Input/Output (I/O) Streams. Dr. Martin O Connor CA166 Lecture 22 Java Input/Output (I/O) Streams Dr. Martin O Connor CA166 www.computing.dcu.ie/~moconnor Topics I/O Streams Writing to a Stream Byte Streams Character Streams Line-Oriented I/O Buffered I/O

More information

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

I/O in Java I/O streams vs. Reader/Writer. HW#3 due today Reading Assignment: Java tutorial on Basic I/O I/O 10-7-2013 I/O in Java I/O streams vs. Reader/Writer HW#3 due today Reading Assignment: Java tutorial on Basic I/O public class Swimmer implements Cloneable { public Date geteventdate() { return (Date)

More information

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

The Java I/O System. Binary I/O streams (ASCII, 8 bits) The decorator design pattern Character I/O streams (Unicode, 16 bits) The Java I/O System Binary I/O streams (ASCII, 8 bits) InputStream OutputStream The decorator design pattern Character I/O streams (Unicode, 16 bits) Reader Writer Comparing binary I/O to character I/O

More information

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

Objec&ves STANDARD ERROR. Standard Error Streams. Ø Byte Streams Ø Text Streams 10/5/16. Oct 5, 2016 Sprenkle - CSCI209 1 Objec&ves Standard Error Streams Ø Byte Streams Ø Text Streams Oct 5, 2016 Sprenkle - CSCI209 1 STANDARD ERROR Oct 5, 2016 Sprenkle - CSCI209 2 1 Standard Streams Preconnected streams Ø Standard Out: stdout

More information

Exceptions and Working with Files

Exceptions and Working with Files Exceptions and Working with Files Creating your own Exceptions. You have a Party class that creates parties. It contains two fields, the name of the host and the number of guests. But you don t want to

More information

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

The I/O Package. THE Java platform includes a number of packages that are concerned with the CHAPTER20 CHAPTER20 The I/O Package From a programmer s point of view, the user is a peripheral that types when you issue a read request. Peter Williams THE Java platform includes a number of packages that are concerned

More information

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 Au Overview CSE 143 Topics Data representation bits and bytes Streams communicating with the outside world Basic Java files Other stream classes Streams Reading: Sec. 19.1, Appendix A2 11/2/2003 (c) 2001-3,

More information

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE Overview CSE 143 Topics Data representation bits and bytes Streams communicating with the outside world Basic Java files Other stream classes Streams Reading: Sec. 19.1, Appendix A2 11/2/2003 (c) 2001-3,

More information

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. Representation of Primitive Java Types. CSE143 Sp Overview CSE 143 Topics Data representation bits and bytes Streams communicating with the outside world Basic Java files Other stream classes Streams Reading: Ch. 16 4/27/2004 (c) 2001-4, University of

More information

Objec&ves. Review. Standard Error Streams

Objec&ves. Review. Standard Error Streams Objec&ves Standard Error Streams Ø Byte Streams Ø Text Streams Oct 5, 2016 Sprenkle - CSCI209 1 Review What are benefits of excep&ons What principle of Java do files break if we re not careful? What class

More information

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

Overview CSE 143. Input and Output. Streams. Other Possible Kinds of Stream Converters. Stream after Stream... CSE143 Wi CSE 143 Overview Topics Streams communicating with the outside world Basic Java files Other stream classes Streams Reading: Ch. 16 2/3/2005 (c) 2001-5, University of Washington 12-1 2/3/2005 (c) 2001-5,

More information

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE

Overview CSE 143. Data Representation GREAT IDEAS IN COMPUTER SCIENCE CSE 143 Overview Topics Data representation bits and bytes Streams communicating with the outside world Basic Java files Other stream classes Streams Reading: Ch. 16 10/20/2004 (c) 2001-4, University of

More information

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

Software 1 with Java. Recitation No. 7 (Java IO) May 29, Software 1 with Java Recitation No. 7 (Java IO) May 29, 2007 1 The java.io package The java.io package provides: Classes for reading input Classes for writing output Classes for manipulating files Classes

More information

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

Basic I/O - Stream. Java.io (stream based IO) Java.nio(Buffer and channel-based IO) I/O and Scannar Sisoft Technologies Pvt Ltd SRC E7, Shipra Riviera Bazar, Gyan Khand-3, Indirapuram, Ghaziabad Website: www.sisoft.in Email:info@sisoft.in Phone: +91-9999-283-283 I/O operations Three steps:

More information

Software 1. Java I/O

Software 1. Java I/O 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

More information

Darshan Institute of Engineering & Technology for Diploma Studies

Darshan Institute of Engineering & Technology for Diploma Studies Streams A stream is a sequence of data. In Java a stream is composed of bytes. In java, 3 streams are created for us automatically. 1. System.out : standard output stream 2. System.in : standard input

More information

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

Software 1 with Java. Recitation No. 9 (Java IO) December 10, Software 1 with Java Recitation No. 9 (Java IO) December 10, 2006 1 The java.io package The java.io package provides: Classes for reading input Classes for writing output Classes for manipulating files

More information

CSC 1214: Object-Oriented Programming

CSC 1214: Object-Oriented Programming CSC 1214: Object-Oriented Programming J. Kizito Makerere University e-mail: www: materials: e-learning environment: office: alt. office: jkizito@cis.mak.ac.ug http://serval.ug/~jona http://serval.ug/~jona/materials/csc1214

More information

I/O Streams. Object-oriented programming

I/O Streams. Object-oriented programming I/O Streams Object-oriented programming Outline Concepts of Data Streams Streams and Files File class Text file Binary file (primitive data, object) Readings: GT, Ch. 12 I/O Streams 2 Data streams Ultimately,

More information

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

תוכנה 1 תרגול 8 קלט/פלט רובי בוים ומתי שמרת תוכנה 1 תרגול 8 קלט/פלט רובי בוים ומתי שמרת A Typical Program Most applications need to process some input and produce some output based on that input The Java IO package (java.io) is to make that possible

More information

Example: Copying the contents of a file

Example: Copying the contents of a file Administrivia Assignment #4 is due imminently Due Thursday April 8, 10:00pm no late assignments will be accepted Sign up in the front office for a demo time Dining Philosophers code is online www.cs.ubc.ca/~norm/211/2009w2/index.html

More information

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

Special error return Constructors do not have a return value What if method uses the full range of the return type? 23 Error Handling Exit program (System.exit()) usually a bad idea Output an error message does not help to recover from the error Special error return Constructors do not have a return value What if method

More information

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

7 Streams and files. Overview. Binary data vs text. Binary data vs text. Readers, writers, byte streams. input-output Overview 7 Streams and files import java.io.*; Binary data vs textual data Simple file processing - examples The stream model Bytes and characters Buffering Byte streams Character streams Binary streams

More information

Performing input and output operations using a Byte Stream

Performing input and output operations using a Byte Stream Performing input and output operations using a Byte Stream public interface DataInput The DataInput interface provides for reading bytes from a binary stream and reconstructing from them data in any of

More information

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

Starting Out with Java: From Control Structures Through Objects Sixth Edition Starting Out with Java: From Control Structures Through Objects Sixth Edition Chapter 11 I/O File Input and Output Reentering data all the time could get tedious for the user. The data can be saved to

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 30 April 4, 2018 I/O & Histogram Demo Chapters 28 HW7: Chat Server Announcements No penalty for late submission by tomorrow (which is a HARD deadline!)

More information

CS 251 Intermediate Programming Java I/O Streams

CS 251 Intermediate Programming Java I/O Streams CS 251 Intermediate Programming Java I/O Streams Brooke Chenoweth University of New Mexico Spring 2018 Basic Input/Output I/O Streams mostly in java.io package File I/O mostly in java.nio.file package

More information

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

Software Development & Education Center. Java Platform, Standard Edition 7 (JSE 7) Software Development & Education Center Java Platform, Standard Edition 7 (JSE 7) Detailed Curriculum Getting Started What Is the Java Technology? Primary Goals of the Java Technology The Java Virtual

More information

Lecture 11.1 I/O Streams

Lecture 11.1 I/O Streams 21/04/2014 Ebtsam AbdelHakam 1 OBJECT ORIENTED PROGRAMMING Lecture 11.1 I/O Streams 21/04/2014 Ebtsam AbdelHakam 2 Outline I/O Basics Streams Reading characters and string 21/04/2014 Ebtsam AbdelHakam

More information

Principles of Software Construction: Objects, Design and Concurrency. Design Case Study: Stream I/O. toad

Principles of Software Construction: Objects, Design and Concurrency. Design Case Study: Stream I/O. toad Principles of Software Construction: Objects, Design and Concurrency Design Case Study: Stream I/O 15-214 toad Christian Kästner Charlie Garrod School of Computer Science 2014 C Kästner, C Garrod, J Aldrich,

More information

HST 952. Computing for Biomedical Scientists Lecture 8

HST 952. Computing for Biomedical Scientists Lecture 8 Harvard-MIT Division of Health Sciences and Technology HST.952: Computing for Biomedical Scientists HST 952 Computing for Biomedical Scientists Lecture 8 Outline Vectors Streams, Input, and Output in Java

More information

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

Java Input / Output. CSE 413, Autumn 2002 Programming Languages. Java Input / Output CSE 413, Autumn 2002 Programming Languages http://www.cs.washington.edu/education/courses/413/02au/ 18-November-2002 cse413-18-javaio 2002 University of Washington 1 Reading Readings

More information

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

Pieter van den Hombergh Richard van den Ham. March 13, 2018 Pieter van den Hombergh Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek March 13, 2018 /FHTenL March 13, 2018 1/23 Topics /FHTenL March 13, 2018 2/23 Figure: Taken from the Oracle/Sun

More information

Java IO and C++ Streams

Java IO and C++ Streams Java IO and C++ Streams October 22, 2004 Operator Overloading in C++ - 2004-10-21 p. 1/31 Outline Java IO InputStream/OutputStream FilterInputStream/FilterOutputStream DataInputStream/DataOutputStream

More information

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

Software 1 with Java. The java.io package. Streams. Streams. Streams. InputStreams The java.io package Software with Java Java I/O Mati Shomrat and Rubi Boim The java.io package provides: Classes for reading input Classes for writing output Classes for manipulating files Classes for

More information

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

Chapter 17 Binary I/O. Liang, Introduction to Java Programming, Eleventh Edition, (c) 2017 Pearson Education, Inc. All rights reserved. Chapter 17 Binary I/O 1 Motivations Data stored in a text file is represented in human-readable form. Data stored in a binary file is represented in binary form. You cannot read binary files. They are

More information

Chapter 10. IO Streams

Chapter 10. IO Streams Chapter 10 IO Streams Java I/O The Basics Java I/O is based around the concept of a stream Ordered sequence of information (bytes) coming from a source, or going to a sink Simplest stream reads/writes

More information

Software Practice 1 - File I/O

Software Practice 1 - File I/O Software Practice 1 - File I/O Stream I/O Buffered I/O File I/O with exceptions CSV format Practice#6 Prof. Joonwon Lee T.A. Jaehyun Song Jongseok Kim (42) T.A. Sujin Oh Junseong Lee 1 (43) / 38 2 / 38

More information

CS193j, Stanford Handout #26. Files and Streams

CS193j, Stanford Handout #26. Files and Streams CS193j, Stanford Handout #26 Summer, 2003 Manu Kumar Files and Streams File The File class represents a file or directory in the file system. It provides platform independent ways to test file attributes,

More information

Simple Java Input/Output

Simple Java Input/Output Simple Java Input/Output Prologue They say you can hold seven plus or minus two pieces of information in your mind. I can t remember how to open files in Java. I ve written chapters on it. I ve done it

More information

Object-Oriented Programming Design. Topic : Streams and Files

Object-Oriented Programming Design. Topic : Streams and Files Electrical and Computer Engineering Object-Oriented Topic : Streams and Files Maj Joel Young Joel Young@afit.edu. 18-Sep-03 Maj Joel Young Java Input/Output Java implements input/output in terms of streams

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 31 April 6 th, 2016 I/O Chapter 28 Poll Did you finish HW 07 PennPals? 1. Yes! 2. I turned it in on time, but there are a few things I couldn't figure

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 31 November 17, 2017 I/O & Histogram Demo Chapters 28 Announcements HW8: SpellChecker Available on the website and Codio Due next Tuesday, November

More information

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

Basic Java IO Decorator pattern Advanced Java IO. Java IO - part 2 BIU OOP. BIU OOP Java IO - part 2 Java IO - part 2 BIU OOP Table of contents 1 Basic Java IO What do we know so far? What s next? 2 Example Overview General structure 3 Stream Decorators Serialization What do we know so far? What s next?

More information

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

Chapter 10. File I/O. Copyright 2016 Pearson Inc. All rights reserved. Chapter 10 File I/O Copyright 2016 Pearson Inc. All rights reserved. Streams A stream is an object that enables the flow of data between a program and some I/O device or file If the data flows into a program,

More information

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

File IO. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 20 File IO Computer Science and Engineering College of Engineering The Ohio State University Lecture 20 I/O Package Overview Package java.io Core concept: streams Ordered sequences of data that have a source

More information

Object-Oriented Programming in the Java language

Object-Oriented Programming in the Java language Object-Oriented Programming in the Java language Part 5. Exceptions. I/O in Java Yevhen Berkunskyi, NUoS eugeny.berkunsky@gmail.com http://www.berkut.mk.ua Exceptions Exceptions in Java are objects. All

More information

10.1 Overview 162 CHAPTER 10 CHARACTER STREAMS

10.1 Overview 162 CHAPTER 10 CHARACTER STREAMS C H A P T E R 1 0 Character streams 10.1 Overview 162 10.2 Character encoding 164 10.3 Class Writer 167 10.4 Class Reader 169 10.5 Class OutputStreamWriter 171 10.6 Class InputStreamReader 173 10.7 An

More information

Ch.7 Internet Protocol: Connectionless Datagram Delivery (IPv4, IPv6)

Ch.7 Internet Protocol: Connectionless Datagram Delivery (IPv4, IPv6) CSC521 Communication Protocols 網路通訊協定 Ch.7 Internet Protocol: Connectionless Datagram Delivery (IPv4, IPv6) 吳俊興國立高雄大學資訊工程學系 Internetworking With TCP/IP, Vol I: Sixth Edition, Douglas E. Comer Outline 1

More information

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

I/O streams. Byte Streams Character Streams InputStream ByteArrayInputStream FileInputStream FilterInputStream Course Name: Advanced Java Lecture 9 Topics to be covered I/O streams Byte Streams Character Streams InputStream ByteArrayInputStream FileInputStream FilterInputStream Introduction A Stream is a sequence

More information

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

File Input/Output. Introduction to Computer Science I. Overview (1): Overview (2): CSE 1020 Summer Bill Kapralos. Bill Kapralos. File Input/Output Tuesday, July 25 2006 CSE 1020, Summer 2006, Overview (1): Before We Begin Some administrative details Some questions to consider The Class Object What is the Object class? File Input

More information

CS112 Lecture: Streams

CS112 Lecture: Streams CS112 Lecture: Streams Objectives: Last Revised March 30, 2006 1. To introduce the abstract notion of a stream 2. To introduce the java File, Input/OutputStream, and Reader/Writer abstractions 3. To show

More information

C17: I/O Streams and File I/O

C17: I/O Streams and File I/O CISC 3120 C17: I/O Streams and File I/O Hui Chen Department of Computer & Information Science CUNY Brooklyn College 4/9/2018 CUNY Brooklyn College 1 Outline Recap and issues Review your progress Assignments:

More information

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

Object Oriented Design with UML and Java. PART VIII: Java IO Object Oriented Design with UML and Java PART VIII: Java IO Copyright David Leberknight and Ron LeMaster. Version 2011 java.io.* & java.net.* Java provides numerous classes for input/output: java.io.inputstream

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 30 November 13, 2015 ExcepEons / IO Chapter 27 HW7: PennPals Chat Due: Tuesday, November 17 th Announcements Start today if you haven't already! Poll

More information

CPS122 Lecture: Input-Output

CPS122 Lecture: Input-Output CPS122 Lecture: Input-Output Objectives: Last Revised April 3, 2017 1. To discuss IO to System.in/out/err 2. To introduce the abstract notion of a stream 3. To introduce the java File, Input/OutputStream,

More information

1.00 Lecture 30. Sending information to a Java program

1.00 Lecture 30. Sending information to a Java program 1.00 Lecture 30 Input/Output Introduction to Streams Reading for next time: Big Java 15.5-15.7 Sending information to a Java program So far: use a GUI limited to specific interaction with user sometimes

More information

Core Java Syllabus. Overview

Core Java Syllabus. Overview Core Java Syllabus Overview Java programming language was originally developed by Sun Microsystems which was initiated by James Gosling and released in 1995 as core component of Sun Microsystems' Java

More information

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

Software 1. תרגול 9 Java I/O Software 1 תרגול 9 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

More information

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 30 April 2, 2012 Streams & IO HW 09 will be available today Announcements Covers Java libraries: colleclons & IO Last automalcally graded HW assignment

More information

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

1993: renamed Java; use in a browser instead of a microwave : Sun sues Microsoft multiple times over Java Java history invented mainly by James Gosling ([formerly] Sun Microsystems) 1990: Oak language for embedded systems needs to be reliable, easy to change, retarget efficiency is secondary implemented as

More information

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

needs to be reliable, easy to change, retarget efficiency is secondary implemented as interpreter, with virtual machine Java history invented mainly by James Gosling ([formerly] Sun Microsystems) 1990: Oak language for embedded systems needs to be reliable, easy to change, retarget efficiency is secondary implemented as

More information

Streams and File I/O

Streams and File I/O Chapter 9 Streams and File I/O Overview of Streams and File I/O Text File I/O Binary File I/O File Objects and File Names Chapter 9 Java: an Introduction to Computer Science & Programming - Walter Savitch

More information

Introduction Unit 4: Input, output and exceptions

Introduction Unit 4: Input, output and exceptions Faculty of Computer Science Programming Language 2 Object oriented design using JAVA Dr. Ayman Ezzat Email: ayman@fcih.net Web: www.fcih.net/ayman Introduction Unit 4: Input, output and exceptions 1 1.

More information

Chapter 10 Input Output Streams

Chapter 10 Input Output Streams Chapter 10 Input Output Streams ICT Academy of Tamil Nadu ELCOT Complex, 2-7 Developed Plots, Industrial Estate, Perungudi, Chennai 600 096. Website : www.ictact.in, Email : contact@ictact.in, Phone :

More information

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

Core Java Contents. Duration: 25 Hours (1 Month) Duration: 25 Hours (1 Month) Core Java Contents Java Introduction Java Versions Java Features Downloading and Installing Java Setup Java Environment Developing a Java Application at command prompt Java

More information

Jonathan Aldrich Charlie Garrod

Jonathan Aldrich Charlie Garrod Principles of So3ware Construc9on: Objects, Design, and Concurrency Part 3: Design Case Studies Design Case Study: Java I/O Jonathan Aldrich Charlie Garrod School of Computer Science 1 Administrivia Homework

More information

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

File. Long term storage of large amounts of data Persistent data exists after termination of program Files stored on secondary storage devices Java I/O File Long term storage of large amounts of data Persistent data exists after termination of program Files stored on secondary storage devices Magnetic disks Optical disks Magnetic tapes Sequential

More information

Ch.9 Internet Protocol: Error And Control Messages (ICMP)

Ch.9 Internet Protocol: Error And Control Messages (ICMP) CSC521 Communication Protocols 網路通訊協定 Ch.9 Internet Protocol: Error And Control Messages (ICMP) 吳俊興國立高雄大學資訊工程學系 Internetworking With TCP/IP, Vol I: Sixth Edition, Douglas E. Comer Outline 1 Introduction

More information

DM550 / DM857 Introduction to Programming. Peter Schneider-Kamp

DM550 / DM857 Introduction to Programming. Peter Schneider-Kamp DM550 / DM857 Introduction to Programming Peter Schneider-Kamp petersk@imada.sdu.dk http://imada.sdu.dk/~petersk/dm550/ http://imada.sdu.dk/~petersk/dm857/ IN & OUTPUT USING STREAMS 2 Streams streams are

More information

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

CS5000: Foundations of Programming. Mingon Kang, PhD Computer Science, Kennesaw State University CS5000: Foundations of Programming Mingon Kang, PhD Computer Science, Kennesaw State University Files Two types: Text file and Binary file Text file (ASCII file) The file data contains only ASCII values

More information

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

Byte and Character Streams. Reading and Writing Console input and output Byte and Character Streams Reading and Writing Console input and output 1 I/O basics The io package supports Java s basic I/O (input/output) Java does provide strong, flexible support for I/O as it relates

More information

CPS122 Lecture: Input-Output

CPS122 Lecture: Input-Output CPS122 Lecture: Input-Output Objectives: Last Revised January 19, 2010 1. To discuss IO to System.in/out/err 2. To introduce the abstract notion of a stream 3. To introduce the java File, Input/OutputStream,

More information

Chapter 10 User Datagram Protocol (UDP)

Chapter 10 User Datagram Protocol (UDP) CSC521 Communication Protocols 網路通訊協定 Chapter 10 User Datagram Protocol (UDP) 吳俊興國立高雄大學資訊工程學系 Internetworking With TCP/IP, Vol I: Sixth Edition, Douglas E. Comer Outline 1 Introduction 2 Using A Protocol

More information

Writing usable APIs in practice

Writing usable APIs in practice Writing usable APIs in practice SyncConf 2013 Giovanni Asproni gasproni@asprotunity.com @gasproni Summary API definition Two assumptions Why bother with usability Some usability concepts Some techniques

More information

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

Week 12. Streams and File I/O. Overview of Streams and File I/O Text File I/O Week 12 Streams and File I/O Overview of Streams and File I/O Text File I/O 1 I/O Overview I/O = Input/Output In this context it is input to and output from programs Input can be from keyboard or a file

More information

Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

Weiss Chapter 1 terminology (parenthesized numbers are page numbers) Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement

More information

14.3 Handling files as binary files

14.3 Handling files as binary files 14.3 Handling files as binary files 469 14.3 Handling files as binary files Although all files on a computer s hard disk contain only bits, binary digits, we say that some files are text files while others

More information

CSD Univ. of Crete Fall Files, Streams, Filters

CSD Univ. of Crete Fall Files, Streams, Filters Files, Streams, Filters 1 CSD Univ. of Crete Fall 2008 Introduction Files are often thought of as permanent data storage (e.g. floppy diskettes) When a file is stored on a floppy or hard disk, the file's

More information

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

Agenda & Reading. Python Vs Java. COMPSCI 230 S Software Construction COMPSCI 230 S2 2016 Software Construction File Input/Output 2 Agenda & Reading Agenda: Introduction Byte Streams FileInputStream & FileOutputStream BufferedInputStream & BufferedOutputStream Character

More information

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

Software 1. The java.io package. Streams. Streams. Streams. InputStreams The java.io package Software 1 תרגול 9 Java I/O The java.io package provides: Classes for reading input Classes for writing output Classes for manipulating files Classes for serializing objects 1 2 Streams

More information

Sri Vidya College of Engineering & Technology Question Bank

Sri Vidya College of Engineering & Technology Question Bank 1. What is exception? UNIT III EXCEPTION HANDLING AND I/O Part A Question Bank An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program s instructions.

More information

Contents. iii Copyright 1998 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services August 1998, Revision B

Contents. iii Copyright 1998 Sun Microsystems, Inc. All Rights Reserved. Enterprise Services August 1998, Revision B Contents About the Course...xv Course Overview... xvi Course Map... xvii Module-by-Module Overview... xviii Course Objectives... xxii Skills Gained by Module... xxiii Guidelines for Module Pacing... xxiv

More information

Ch. 22 Bootstrap And Autoconfiguration (DHCP, NDP or IPv6-ND)

Ch. 22 Bootstrap And Autoconfiguration (DHCP, NDP or IPv6-ND) CSC521 Communication Protocols 網路通訊協定 Ch. 22 Bootstrap And Autoconfiguration (DHCP, NDP or IPv6-ND) 吳俊興國立高雄大學資訊工程學系 Internetworking With TCP/IP, Vol I: Sixth Edition, Douglas E. Comer Outline 1 Introduction

More information

ROEVER ENGINEERING COLLEGE Elambalur,Perambalur DEPARTMENT OF CSE

ROEVER ENGINEERING COLLEGE Elambalur,Perambalur DEPARTMENT OF CSE ROEVER ENGINEERING COLLEGE Elambalur,Perambalur-621212 DEPARTMENT OF CSE 2 marks questions with answers CS331-ADVANCED JAVA PROGRAMMING 1. What is Java Streaming? Java streaming is nothing more than a

More information

Techniques of Java Programming: Streams in Java

Techniques of Java Programming: Streams in Java Techniques of Java Programming: Streams in Java Manuel Oriol May 8, 2006 1 Introduction Streams are a way of transferring and filtering information. Streams are directed pipes that transfer information

More information

Lab 2: File Input and Output

Lab 2: File Input and Output Lab 2: File Input and Output This lab introduces how to handle files as both input and output. We re coming back to Tracery (which you implemented in Lab 1) with this assignment but instead of always reading

More information

CISC 323 (Week 9) Design of a Weather Program & Java File I/O

CISC 323 (Week 9) Design of a Weather Program & Java File I/O CISC 323 (Week 9) Design of a Weather Program & Java File I/O Jeremy Bradbury Teaching Assistant March 8 & 10, 2004 bradbury@cs.queensu.ca Programming Project The next three assignments form a programming

More information

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

F1 A Java program. Ch 1 in PPIJ. Introduction to the course. The computer and its workings The algorithm concept F1 A Java program Ch 1 in PPIJ Introduction to the course The computer and its workings The algorithm concept The structure of a Java program Classes and methods Variables Program statements Comments Naming

More information

Files and Streams

Files and Streams Files and Streams 4-18-2006 1 Opening Discussion Do you have any questions about the quiz? What did we talk about last class? Do you have any questions about the assignment? What are files and why are

More information

IT101. File Input and Output

IT101. File Input and Output IT101 File Input and Output IO Streams A stream is a communication channel that a program has with the outside world. It is used to transfer data items in succession. An Input/Output (I/O) Stream represents

More information

Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives

Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives 1 Table of content TABLE OF CONTENT... 2 1. ABOUT OCPJP SCJP... 4 2.

More information