JAVA Files and IO
JAVA Files and IO
Java has several methods for creating, reading, updating, and deleting files.
The File class from the java.io package, allows us to work with files.
To use the File class, create an object of the class, and specify the filename or directory name:
Example
The File class has many useful methods for creating and getting information about files. For
example:
Create a File
To create a file in Java, you can use the createNewFile() method. This method returns a boolean
value: true if the file was successfully created, and false if the file already exists. Note that the
method is enclosed in a try...catch block. This is necessary because it throws an IOException if
an error occurs (if the file cannot be created for some reason):
try {
if (myObj.createNewFile()) {
} else {
} catch (IOException e) {
e.printStackTrace();
}
}
To create a file in a specific directory (requires permission), specify the path of the file and use
double backslashes to escape the "\" character (for Windows). On Mac and Linux you can just
write the path, like: /Users/name/filename.txt
Example
Write To a File
In the following example, we use the FileWriter class together with its write() method to write
some text to the file we created in the example above. Note that when you are done writing to the
file, you should close it with the close() method:
Example
try {
myWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Read a File
In the following example, we use the Scanner class to read the contents of the text file we created
in the previous chapter:
try {
while (myReader.hasNextLine()) {
System.out.println(data);
myReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Delete a File
if (myObj.delete()) {
} else {
Delete a Folder
import java.io.File;
if (myObj.delete()) {
} else {
The java.io package contains nearly every class you might ever need to perform input and output
(I/O) in Java. All these streams represent an input source and an output destination. The stream
in the java.io package supports many data such as primitives, object, localized characters, etc.
Streams
A stream can be defined as a sequence of data. There are two kinds of Streams −
Java provides strong but flexible support for I/O related to files and networks but this tutorial
covers very basic functionality related to streams and I/O. We will see the most commonly used
examples one by one −
Byte Streams
Java byte streams are used to perform input and output of 8-bit bytes. Though there are many
classes related to byte streams but the most frequently used classes
are, FileInputStream and FileOutputStream. Following is an example which makes use of
these two classes to copy an input file into an output file −
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
try {
in = new FileInputStream("input.txt");
out = new FileOutputStream("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
}finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
As a next step, compile the above program and execute it, which will result in creating output.txt
file with the same content as we have in input.txt. So let's put the above code in CopyFile.java
file and do the following −
$javac CopyFile.java
$java CopyFile
Character Streams
Java Byte streams are used to perform input and output of 8-bit bytes, whereas
Java Character streams are used to perform input and output for 16-bit unicode. Though there
are many classes related to character streams but the most frequently used classes
are, FileReader and FileWriter. Though internally FileReader uses FileInputStream and
FileWriter uses FileOutputStream but here the major difference is that FileReader reads two
bytes at a time and FileWriter writes two bytes at a time.
We can re-write the above example, which makes the use of these two classes to copy an input
file (having unicode characters) into an output file −
Example
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
try {
in = new FileReader("input.txt");
out = new FileWriter("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
}finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
As a next step, compile the above program and execute it, which will result in creating output.txt
file with the same content as we have in input.txt. So let's put the above code in CopyFile.java
file and do the following −
$javac CopyFile.java
$java CopyFile
The Scanner class is used to get user input, and it is found in the java.util package.
To use the Scanner class, create an object of the class and use any of the available methods found
in the Scanner class documentation. In our example, we will use the nextLine() method, which is
used to read Strings:
Example
class Main {
OUTPUT:
Enter username
Rani
Username is: rani