0% found this document useful (0 votes)
0 views

2.1 Java IO

The document introduces the concept of file processing in programming, highlighting the limitations of using variables and arrays for data storage. It explains the use of streams in Java for managing input and output operations, categorizing them into byte and character streams, and discusses the related classes in the java.io package. Additionally, it covers operations for reading and writing data, as well as exception handling during file operations.

Uploaded by

Sagar Saini
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
0 views

2.1 Java IO

The document introduces the concept of file processing in programming, highlighting the limitations of using variables and arrays for data storage. It explains the use of streams in Java for managing input and output operations, categorizing them into byte and character streams, and discusses the related classes in the java.io package. Additionally, it covers operations for reading and writing data, as well as exception handling during file operations.

Uploaded by

Sagar Saini
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

Streams and Input/Output

Files
Part I

1
Introduction
 So far we have used variables and arrays for
storing data inside the programs. This approach
poses the following limitations:
 The data is lost when variable goes out of scope or when
the program terminates. That is data is stored in
temporary/mail memory is released when program
terminates.
 It is difficult to handle large volumes of data.
 We can overcome this problem by storing data on
secondary storage devices such as floppy or hard
disks.
 The data is stored in these devices using the
concept of Files and such data is often called
persistent data.
2
File Processing
 Storing and manipulating data using files
is known as file processing.
 Reading/Writing of data in a file can be
performed at the level of bytes,
characters, or fields depending on
application requirements.
 Java also provides capabilities to read and
write class objects directly. The process of
reading and writing objects is called
object serialisation.
3
C Input/Output Revision

FILE* fp;

fp = fopen(“In.file”, “rw”);
fscanf(fp, ……);
frpintf(fp, …..);
fread(………, fp);
fwrite(……….., fp);

4
I/O and Data Movement
 The flow of data into a
program (input) may come
from different devices such
as keyboard, mouse,
memory, disk, network, or
another program.
 The flow of data out of a
program (output) may go to
the screen, printer, memory,
disk, network, another
program.
 Both input and output share
a certain common property
such as unidirectional
movement of data – a
sequence of bytes and
characters and support to the
sequential access to the
data.

5
Streams
 Java Uses the concept of
Streams to represent the
ordered sequence of data,
a common characteristic
shared by all I/O devices.
 Streams presents a
uniform, easy to use,
object oriented interface
between the program and
I/O devices.
 A stream in Java is a path
along which data flows
(like a river or pipe along
which water flows).

6
Stream Types
 The concepts of
sending data from Input Stream
one stream to another reads
(like a pipe feeding Source Program
into another pipe) has
made streams
powerful tool for file Output Stream
processing.
Program Source
 Connecting streams writes
can also act as filters.
 Streams are classified
into two basic types:

Input Steam

Output Stream

7
Java Stream Classes
 Input/Output related classes are
defined in java.io package.
 Input/Output in Java is defined in terms
of streams.
 A stream is a sequence of data, of no
particular length.
 Java classes can be categorised into
two groups based on the data type one
which they operate:

Byte streams

Character Streams

8
Streams

Byte Streams Character streams

Operated on 8 bit Operates on 16-bit


(1 byte) data. (2 byte) unicode
characters.
Input Readers/ Writers
streams/Output
streams

9
Classification of Java Stream
Classes

Byte Stream Character Stream


classes classes

10
Byte Input Streams

InputStream
ObjectInputStream
SequenceInputStream
ByteArrayInputStream
PipedInputStream

FilterInputStream

PushbackInputStream

DataInputStrea BufferedInputStre
m am
11
Byte Input Streams -
operations
public abstract int Reads a byte and returns
read() as a integer 0-255
public int read(byte[] Reads and stores the
buf, int offset, int count) bytes in buf starting at
offset. Count is the
maximum read.
public int read(byte[] Same as previous
buf) offset=0 and
length=buf.length()
public long skip(long Skips count bytes.
count)
public int available() Returns the number of
bytes that can be read. 12
Byte Input Stream - example
 Count total number of bytes in the file

import java.io.*;

class CountBytes {
public static void main(String[] args)
throws FileNotFoundException, IOException
{
FileInputStream in;
in = new FileInputStream(“InFile.txt”);

int total = 0;
while (in.read() != -1)
total++;
System.out.println(total + “ bytes”);
}
}
13
What happens if the file did not
exist
 JVM throws exception and terminates the program
since there is no exception handler defined.

c:/ java CountBytes

Exception in thread "main"


java.io.FileNotFoundException: FileIn.txt (No such
file or directory)
at java.io.FileInputStream.open(Native Method)
at
java.io.FileInputStream.<init>(FileInputStream.jav
a:64)
at CountBytes.main(CountBytes.java:12)

14
Byte Output Streams

OutputStream
ObjectOutputStream
SequenceOutputStream
ByteArrayOutputStream
PipedOutputStream

FilterOutputStream

PrintStream

DataOutputStre BufferedOutputStrea
am m
15
Byte Output Streams -
operations
public abstract void Write b as bytes.
write(int b)
public void write(byte[] Write count bytes
buf, int offset, int count) starting from offset in
buf.
public void write(byte[] Same as previous
buf) offset=0 and count =
buf.length()
public void flush() Flushes the stream.
public void close() Closes stream

16
Byte Output Stream - example
 Read from standard in and write to standard out

import java.io.*;

class ReadWrite {
public static void main(string[] args)
throws IOException
{
int b;
while (( b = System.in.read()) != -1)
{
System.out.write(b);
}

17
Summary
 Streams provide uniform interface
for managing I/O operations in Java
irrespective of device types.
 Java supports classes for handling
Input Steams and Output steams via
java.io package.
 Exceptions supports handling of
errors and their propagation during
file operations.

18

You might also like