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

Files & Streams

This document discusses files and streams in Java. It covers: 1. The File class represents files and directories and allows getting information about and manipulating files without opening them. 2. The Scanner and Formatter classes can be used to easily read from and write to files. 3. FileInputStream, FileOutputStream, FileReader and FileWriter allow reading and writing files as bytes or characters. 4. BufferedReader and BufferedWriter add buffering to reading and writing for better performance.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views

Files & Streams

This document discusses files and streams in Java. It covers: 1. The File class represents files and directories and allows getting information about and manipulating files without opening them. 2. The Scanner and Formatter classes can be used to easily read from and write to files. 3. FileInputStream, FileOutputStream, FileReader and FileWriter allow reading and writing files as bytes or characters. 4. BufferedReader and BufferedWriter add buffering to reading and writing for better performance.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 21

Files & Streams

Farwah Sahar
java.io.File
• java.io.File is the central class in working with files and directories.

• Files and directories are both represented by File objects.

• When a File object is created, the system doesn't test to see if a


corresponding file/directory actually exists; you must call exists() to
check.
Classes Scanner and Formatter
• Scanner – can be used to easily read data from a file

• Formatter – can be used to easily write data to a file


File Constructors and Methods
Constructors Setting Attributes
f.setLastModified(t); Sets last modified time to long value t.
f= new File(path); Create File object for default
directory (usually where program b= f.setReadOnly(); Make file read only. Returns true if successful.
is located).
Paths
s= f.getPath(); path name.
f= new File(dirpath, fname); Create File object for directory path s= f.getAbsolutePath(); path name (how is it different from above?).
given as string.
s= f.getCanonicalPath(); path name. May throw IOException.

f= new File(dir, fname); Create File object for directory. s= f.toURL(); path with "file:" prefix and /'s. Directory paths end with /.

public static constants s= f.toURI(); path with "file:" prefix and /'s. Directory paths end with /.

s= File.separator; Default path separator (eg, "/" in


Unix, "\" in Windows). Creating and deleting files and directories
b= f.delete(); Deletes the file.
b= f.createNewFile(); Create file, may throw IOException. true if OK; false if
Getting Attributes already exists.

b= f.exists(); true if file exists.


b= f.renameTo(f2); Renames f to File f2. Returns true if successful.
b= f.isFile(); true if this is a normal file.

b= f.mkdir(); Creates a directory. Returns true if successful.


b= f.isDirectory(); true if f is a directory.
s= f.getName(); name of file or directory.
b= f.mkdirs(); Creates directory and all dirs in path. Returns true if
successful.
b= f.canRead(); true if can read file.
Parents and Children
b= f.canWrite(); true if can write file. s= f.getParent(); Name of parent directory.
b= f.isHidden(); true if file is hidden.
dir = f.getParentFile(); File of parent.
l= f.lastModified(); Time of last modification. sa = dir.list(); Array of file/directory names in dir.

fa = dir.listFiles(); Array of files/directories in dir.


l= f.length(); Number of bytes in file.
fa = dir.listFiles(ff); As above after applying java.io.FileFilter ff.
BufferedReader/Writer
BufferedReader BufferedWriter
BufferedReader Constructor -- see examples BufferedWriter Constructor -- see examples
br = new BufferedReader(new FileReader(f)); bw = new BufferedWriter(new FileWriter(f));
BufferedReader Methods BufferedWriter Methods
s = br.readLine() Returns next input line without newline bw.write(s, offs Writes len chars from s starting at
char(s) or null if no more input. May et, len) index offset. May throw
throw IOException. IOException.

bw.write(ca, off Writes len chars from ca starting


set, len) at index offset. May throw
c = br.read() Reads and returns one char. Returns -1 IOException.
on end-of-file. Note that that this returns
an int, which is necessary so that the -1 bw.write(s) Writes s to file. Doesn't add
value indicating EOF can be stored. The newline char. May throw
int value can be cast to a char. May throw IOException.
IOException.
bw.write(c) Writes single character c to file.
May throw IOException.

size = br.read(ca, Read up to len chars into ca starting at


offset, len) index offset. Returns -1 on end-of-file. bw.newLine() Writes operating-system
May throw IOException. dependent newline (CR, LF, or
CRLF).

bw.close() Call close() when finished writing,


br.close() Close when finished reading to unlock otherwise data may not be written
file. to disk.
File Filters
• There are two common uses of file filters, which restrict the choice
of files:
• To display only specific files in a file chooser dialog.
– javax.swing.filechooser.FileFilter
• To restrict the list returned from the File class listfiles method.
– java.io.FileFilter interface
Read page from Web server
• by using the URL, URLConnection, or HttpURLConnection classes.
File Class
• The File class is used to create objects that provide access to the
files and directories of a local file system.

• Objects of class File do not open files or provide any file-processing


capabilities
I/O streams

• There are three predefined I/O streams that use the console.
• These are equivalent to Unix standard input, error, and output
streams.
• System.in // an InputStream.
• System.out // a PrintStream to write to console.
• System.err //.

• Java opens file by creating an object and associating a stream


with it
java.io classes
• FileInputStream and FileOutputStream – byte-based I/O

• FileReader and FileWriter – character-based I/O

• ObjectInputStream and ObjectOutputStream – used for input


and output of objects or variables of primitive data types

• File – useful for obtaining information about files and directories


Sequential-Access Text Files
• Records are stored in order by record-key field
• Can be created as text files or binary files

11
Creating a Sequential-Access Text File

• Java imposes no structure on a file, records do not exist as part of the Java
language
• Programmer must structure files
• Formatter class can be used to open a text file for writing

– Pass name of file to constructor

– If file does not exist, will be created

– If file already exists, contents are truncated (discarded)

– Use method format to write formatted text to file

– Use method close to close the Formatter object (if method not called,
OS normally closes file when program exits)

12
Creating a Sequential-Access Text File

• Possible exceptions

• SecurityException – occurs when opening file using Formatter


object, if user does not have permission to write data to file

• FileNotFoundException – occurs when opening file using


Formatter object, if file cannot be found and new file cannot be
created

• NoSuchElementException – occurs when invalid input is read in


by a Scanner object

• FormatterClosedException – occurs when an attempt is made


to write to a file using an already closed Formatter object

13
Reading Data from a Sequential-Access Text
File
• Data is stored in files so that it may be retrieved for processing when
needed

• Scanner object can be used to read data sequentially from a text file

– Pass File object representing file to be read to Scanner constructor

– FileNotFoundException occurs if file cannot be found

– Data read from file using same methods as for keyboard input –
nextInt, nextDouble, next, etc.

– IllegalStateException occurs if attempt is made to read from closed


Scanner object

14
Object Serialization
• With text files, data type information lost

• Object serialization – mechanism to read or write an entire object from a


file

• Serialized object – object represented as sequence of bytes, includes


object’s data and type information about object

• Deserialization – recreate object in memory from data in file

• Serialization and deserialization performed with classes


ObjectInputStream and ObjectOutputStream, methods readObject and
writeObject

15
Creating a Sequential-Access File Using Object Serialization:

• Serializable interface – programmers must declare a class to implement


the Serializable interface, or objects of that class cannot be written to a
file

• To open a file for writing objects, create a FileOutputStream wrapped by


an ObjectOutputStream

– FileOutputStream provides methods for writing byte-based output to


a file

– ObjectOutputStream uses FileOutputStream to write objects to file

– ObjectOutputStream method writeObject writes object to output file

– ObjectOutputStream method close closes both objects

16
Reading and Deserializing Data from a
Sequential-Access File
• To open a file for reading objects, create a FileInputStream wrapped by an
ObjectInputStream

– FileInputStream provides methods for reading byte-based input from a


file

– ObjectInputStream uses FileInputStream to read objects from file

– ObjectInputStream method readObject reads in object, which is then


downcast to proper type

• EOFException occurs if attempt made to read past end of file

• ClassNotFoundException occurs if the class for the object being


read cannot be located

– ObjectInputStream method close closes both objects

17
Serializing & Deserializing
• The process of writing the state of an object to a byte stream is
known as Serialization.
• The process of Restoring the serialized objects is known as
Deserialization.
Random-Access Files
• Sequential-access files inappropriate for instant-access applications

• Instant-access applications are applications in which desired information


must be located immediately

• Instant access possible with random-access files (also called direct-access


files) and databases

• Data can be inserted in random-access file without destroying other data

• Different techniques for creating random-access files

– Simplest: Require that all records in file be same fixed length

• Easy to calculate (as a function of record size and record key) exact
location of any record relative to beginning of file

19
Creating a Random-Access File
• RandomAccessFile class

• Includes all capabilities of FileInputStream and FileOutputStream

• Includes capabilities for reading and writing primitive-type values, byte arrays and
strings

• Using RandomAccessFile, program can read or write data beginning at location specified
by file-position pointer

• Manipulates all data as primitive types

• Methods readInt, readDouble, readChar used to read integer, double and character data
from file

• Methods writeInt, writeDouble, writeChars used to write integer, double and string data
to file

• File-open mode – specifies whether file is opened for reading (“r”), or for both reading
and writing (“rw”). File-open mode specified as second argument to RandomAccessFile
constructor

20
Creating a Random-Access File

• StringBuffer class – allows us to dynamically manipulate strings

– String objects are immutable, StringBuffer used so strings can be


changed dynamically

– Can store a number of characters specified by capacity

– If the capacity is exceeded, the capacity is expanded

– Number of characters in StringBuffer set with method setLength

• Create random access file by writing blank or empty records to file


for amount of records that will be needed

21

You might also like