Air Force Institute of Technology - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

Air Force Institute of Technology

Description:

Object-Oriented Programming Design Topic : Streams and Files Maj Joel Young Joel Young_at_afit.edu. Maj Joel Young Java Input/Output Java implements input/output in ... – PowerPoint PPT presentation

Number of Views:15
Avg rating:3.0/5.0
Slides: 15
Provided by: tja70
Learn more at: http://faculty.nps.edu
Category:

less

Transcript and Presenter's Notes

Title: Air Force Institute of Technology


1
Object-Oriented Programming DesignTopic
Streams and Files
  • Maj Joel Young
  • Joel Young_at_afit.edu.

Maj Joel Young
2
Java Input/Output
  • Java implements input/output in terms of streams
    of characters
  • Streams have a producer, or source
  • Streams have a consumer, or sink
  • Sometimes sources are sinks depending on use(a
    file can be both a source and a sink)

3
I/O Processors
  • Control over the stream is improved by adding
    processors
  • Convert char streams to integers, doubles,
    strings, etc.
  • Perform filtering
  • Buffer characters to improve read performance

4
Data Sinks/Sources
  • Several kinds of data streams in Java

5
The Pipeline Concept
  • Writing Data Start with a sink, such as a
    FileOutputStream
  • Writes only one byte at a time (or an array of
    bytes), not very efficient so we add a buffer
    manager
  • Can still only write a byte (or array of bytes),
    so we add a DataOutputStream to allow more
    complex types

6
The Pipeline Concept
  • Reading Data Start with a source, such as a
    FileInputStream
  • Reads only one byte at a time (or an array of
    bytes), not very efficient so we add a buffer
    manager
  • Can still only read a byte (or array of bytes),
    so we add a DataInputStream to allow more complex
    types

7
File Streams
  • File Streams (Byte Stream Classes)
  • FileInputStream read bytes/arrays of bytes
  • FileOutputStream write bytes/arrays of bytes

import java.io. public class Copy public
static void main(String args) throws
IOException FileInputStream in
new FileInputStream(source.dat)
FileOutputStream out new FileOutputStream(dest.
dat) int c while ((c in.read())
! -1) out.write(c) in.close()
out.close()
8
File Streams
  • Add DataInputStream/DataOutputStream
  • Provides read/write methods for primitives
  • Provides read/write methods for unicode strings

import java.io. public class Test public
static void main(String args) throws
IOException FileOutputStream fos
new FileOutputStream(output.dat)
DataOutputStream dos new DataOutputStream(fos)
dos.writeDouble(64.356)
dos.close() FileInputStream fis new
FileInputStream(output.dat)
DataInputStream dis new DataInputStream(fis)
double test dis.readDouble()
System.out.println( test ) dis.close()

9
File Streams
  • Can keep adding processors ...
  • Add buffered input/output

import java.io. public class Test2 public
static void main(String args) throws
IOException FileOutputStream fos
new FileOutputStream(output.dat)
BufferedOutputStream bos new BufferedOutputStrea
m(fos) DataOutputStream dos new
DataOutputStream(bos) dos.writeDouble(64.35
6) dos.close() FileInputStream fis
new FileInputStream(output.dat)
BufferedInputStream bis new BufferedInputStream(
fis) DataInputStream dis new
DataInputStream(bis) double test
dis.readDouble() System.out.println( test
) dis.close()
10
File Streams
  • File Streams (Character Stream Classes)
  • FileReader read chars/arrays of chars
  • FileWriter write chars/arrays of chars

import java.io. public class Copy2 public
static void main(String args) throws
IOException FileReader in new
FileReader(source.dat) FileWriter out
new FileWriter(dest.dat) int c
while ((c in.read()) ! -1)
out.write(c) in.close()
out.close()
11
ASCII Files
  • Problem ASCII uses 8-bit chars, but Java uses
    16-bit Unicode chars how do we read plain-text
    files?
  • InputStreamReader Translates input bytes to
    Unicode

public class Copy public static void
main(String args) throws IOException
FileInputStream in new FileInputStream(source.
dat) InputStreamReader isr new
InputStreamReader(in) BufferedReader br
new BufferedReader(isr) String line
br.readLine() // Read a line of text
while (line ! null) // Any more text to read?
System.out.println(line) //
Print the text to the console line
br.readLine() // Read more text
br.close()
12
ASCII Formatted Numbers Variable Length Strings
class Test static public void main(String
args) throws IOException BufferedReader
br new BufferedReader(new InputStreamReader(
new FileInputStream(test.d
at))) String line br.readLine() // Get
first line of text StringTokenizer st
int studentNum double gradeAvg String
name while (line ! null) st
new StringTokenizer(line) studentNum
Integer.parseInt(st.nextToken()) gradeAvg
Double.parseDouble(st.nextToken()) name
st.nextToken() while (st.hasMoreTokens())
name name
st.nextToken() System.out.println(s
tudentNum,gradeAvg,name) line
br.readLine()
1 4.0 Smith, Joe 2 2.8 Jones, Jim Bob 3 3.9 Doe,
Tricia . . .
13
Console I/O
  • PrintStream
  • Heavily overloaded versions of print() for
  • print(int n)
  • print(double d)
  • print(float f)
  • print(String s)
  • Version called println() puts a newline
    character after the formatted text

14
System.in System.out
  • Like C keeps stdin and stdout streams open
    at all times
  • System.in is a class attribute of type
    InputStream
  • System.out is a class attribute of type
    PrintStream

import java.io. public class Test public
static void main(String args) throws
IOException System.out.print(Heres
a string ) System.out.println(10) //
Integer 10 w/new line break
Write a Comment
User Comments (0)
About PowerShow.com