File f=new File("abc.txt");
- This line 1st checks whether abc.txt file is already available (or) not if it is already available then "f" simply refers that file.
- If it is not already available then it won't create any physical file just creates a java File object represents name of the file.
Example:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException {
File f=new File("cricket.txt");
System.out.println(f.exists());//false
f.createNewFile();
System.out.println(f.exists());//true
}
}
output :
false
true
true
true
A java File object can represent a directory also.
Example:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException {
File f=new File("cricket123");
System.out.println(f.exists());//false
f.mkdir();
System.out.println(f.exists());//true
}
}
Note:
- in UNIX everything is a file, java "file IO" is based on UNIX operating system hence in java also we can represent both
- files and directories by File object only.
File class constructors:
- File f=new File(String name);
- Creates a java File object that represents name of the file or directory in current working directory.
- File f=new File(String subdirname,String name);
- Creates a File object that represents name of the file or directory present in specified sub directory.
- File f=new File(File subdir,String name);
Requirement: Write code to create a file named with demo.txt in current working directory.
Program:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException {
File f1=new File("SaiCharan123");
f1.mkdir();
File f2=new File("SaiCharan123","abc.txt");
f2.createNewFile();
}
}
Requirement:
- Write code to create a directory named with SaiCharan123 in current working directory and create a file named with abc.txt in that directory.
Program:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException {
File f1=new File("SaiCharan123");
f1.mkdir();
File f2=new File("SaiCharan123","abc.txt");
f2.createNewFile();
}
}
Requirement:
- Write code to create a file named with demo.txt present in c:\saicharan folder.
Program:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException {
File f=new File("c:\\saiCharan","demo.txt");
f.createNewFile();
}
}
Import methods of file class:
1. boolean exists();
- Returns true if the physical file or directory available.
2. booleancreateNewFile();
- This method 1st checks whether the physical file is already available or not if it is already available then this method simply returns false without creating any physical file.
- If this file is not already available then it will create a new file and returns true
3. booleanmkdir();
- This method 1st checks whether the directory is already available or not if it is already available then this method simply returns false without creating any directory.
- If this directory is not already available then it will create a new directory and returns true
4. booleanisFile();
- Returns true if the File object represents a physical file.
5. booleanisDirectory();
- Returns true if the File object represents a directory.
6. String[] list();
- It returns the names of all files and subdirectories present in the specified directory.
7. long length();
- Returns the no of characters present in the file.
8. boolean delete();
- To delete a file or directory.
Requirement:
- Write a program to display the names of all files and directories present in c:\\charan_classes.
Program:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException {
int count=0;
File f=new File("c:\\charan_classes");
String[] s=f.list();
for(String s1=s) {
count++;
System.out.println(s1);
}
System.out.println("total number : "+count);
}
}
Requirement:
- Write a program to display only file names
Program:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException {
int count=0;
File f=new File("c:\\charan_classes");
String[] s=f.list();
for(String s1=s) {
File f1=new file(f,s1);
if(f1.isFile()) {
count++;
System.out.println(s1);
}
}
}
Requirement:
- Write a program to display only directory names
Program:
import java.io.*;
class FileDemo {
public static void main(String[] args)throws IOException{
int count=0;
File f=new File("c:\\charan_classes");
String[] s=f.list();
for(String s1=s) {
File f1=new file(f,s1);
if(f1.isDirectory()) {
count++;
System.out.println(s1);
}
System.out.println("total number : "+count);
}
FileWriter:
- By using FileWriter object we can write character data to the file.
Constructors:
- FileWriterfw=new FileWriter(String name);
- FileWriterfw=new FileWriter(File f);
The above 2 constructors meant for overriding.
- Instead of overriding if we want append operation then we should go for the following 2 constructors.
- FileWriterfw=new FileWriter(String name,boolean append);
- FileWriterfw=new FileWriter(File f,boolean append);
- If the specified physical file is not already available then these constructors will create that file.
Methods:
- 1. write(intch); -> To write a single character to the file.
- 2. write(char[] ch); -> To write an array of characters to the file.
- 3. write(String s); -> To write a String to the file.
- 4. flush(); -> To give the guarantee the total data include last character also written to the file.
- 5. close(); -> To close the stream.
Example:
import java.io.*;
classFileWriterDemo {
public static void main(String[] args)throws IOException {
FileWriterfw=new FileWriter("cricket.txt",true);
fw.write(99);//adding a single character
fw.write("haran\nsoftware solutions");
fw.write("\n");
char[] ch={'a','b','c'};
fw.write(ch);
fw.write("\n");
fw.flush();
fw.close();
}
}
charan
software solutions abc
Note :
- The main problem with FileWriter is we have to insert line separator manually , which is difficult to the programmer. ('\n')
- And even line separator varing from system to system. FileReader: By using FileReader object we can read character data from the file.
Constructors:
- FileReaderfr=new FileReader(String name);
- FileReaderfr=new FileReader (File f);
Methods:
int read();
- It attempts to read next character from the file and return its Unicode value. If the next character is not available then we will get -1.
- int i=fr.read();
- System.out.println((char)i);
- As this method returns unicodevalue , while printing we have to perform type casting.
int read(char[] ch);
- It attempts to read enough characters from the file into char[] array and returns the no of characters copied from the file into char[] array.
- File f=new File("abc.txt");
- Char[] ch=new Char[(int)f.length()];
void close();
import java.io.*;
classFileReaderDemo {
public static void main(String[] args)throws IOException {
FileReaderfr=new FileReader("cricket.txt");
int i=fr.read(); //more amount of data
while(i!=-1) {
System.out.print((char)i);
i=fr.read();
}
}
}
Charan
Software solutions
ABC
class Student {
String name;
int rollno;
Student(String name, int rollno) {
this.name=name;
this.rollno=rollno;
}
public static void main(String args[]){
Student s1=new Student("saicharan",101);
Student s2=new Student("ashok",102);
System.out.println(s1);
System.out.println(s1.toString());
System.out.println(s2);
}
}
Output:
XYZ
Software solutions.
- Usage of FileWriter and FileReader is not recommended because :
- While writing data by FileWriter compulsory we should insert line separator(\n) manually which is a bigger headache to the programmer.
- While reading data by FileReader we have to read character by character instead of line by line which is not convenient to the programmer.
- To overcome these limitations we should go for BufferedWriter and BufferedReader concepts.
BufferedWriter:
- By using BufferedWriter object we can write character data to the file.
Constructors:
- BufferedWriterbw=new BufferedWriter(writer w);
- BufferedWriterbw=new BufferedWriter(writer w,intbuffersize);
Note:
- BufferedWriter never communicates directly with the file it should communicates via some writer object.
Which of the following declarations are valid?
- BufferedWriterbw=new BufferedWriter("cricket.txt"); (invalid)
- BufferedWriterbw=new BufferedWriter (new File("cricket.txt")); (invalid)
- BufferedWriterbw=new BufferedWriter (new FileWriter("cricket.txt")); (valid)
Methods:
2. write(char[] ch);
3. write(String s);
4. flush();
5. close();
6. newline();
Inserting a new line character to the file.
- When compared with FileWriter which of the following capability(facility) is available as method in BufferedWriter.
- 1. Writing data to the file.
- 2. Closing the writer.
- 3. Flush the writer.
- 4. Inserting newline character.
Example:
import java.io.*;
classBufferedWriterDemo {
public static void main(String[] args)throws IOException {
FileWriterfw=new FileWriter("cricket.txt");
BufferedWriterbw=new BufferedWriter(fw);
bw.write(100);
BufferedWriterbw=new BufferedWriter(writer w);
BufferedWriterbw=new BufferedWriter(writer w,intbuffersize);
bw.newLine();
char[] ch={'a','b','c','d'};
bw.write(ch);
bw.newLine();
bw.write("SaiCharan");
bw.newLine();
bw.write("software solutions");
bw.flush();
bw.close();
}
}
d
abcd
SaiCharan
software solutions
Note :
- When ever we are closing BufferedWriter automatically underlying writer will be closed and we are not close explicitly.
BufferedReader:
- This is the most enhanced(better) Reader to read character data from the file. Constructors:
- BufferedReaderbr=new BufferedReader(Reader r); BufferedReaderbr=new BufferedReader(Reader r,intbuffersize);
- Note:BufferedReadercan not communicate directly with the File it should communicate via some Reader object.
- The main advantage of BufferedReader over FileReader is we can read data line by line instead of character by character.
Methods:
- int read();
- int read(char[] ch);
- String readLine();
- It attempts to read next line and return it , from the File. if the next line is not available then this method returns null.
- void close();
Example:
import java.io.*;
classBufferedReaderDemo {
public static void main(String[] args)throws IOException {
FileReaderfr=new FileReader("cricket.txt");
BufferedReaderbr=new BufferedReader(fr);
String line=br.readLine();
while(line!=null) {
System.out.println(line);
line=br.readLine();
}
br.close();
}
}
Note:
- Whenever we are closing BufferedReader automatically underlying FileReader will be closed it is not required to close explicitly.
- Even this rule is applicable for BufferedWriter also.
PrintWriter:
- This is the most enhanced Writer to write text data to the file.
- By using FileWriter and BufferedWriter we can write only character data to theFile but by using PrintWriter we can write any type of data to the File.
Constructors:
- PrintWriter pw=new PrintWriter(String name);
- PrintWriter pw=new PrintWriter(File f);
- PrintWriter pw=new PrintWriter(Writer w);
PrintWriter can communicate either directly to the File or via some Writer object also.
Methods:
2. write (char[] ch);
3. write(String s);
4. flush();
5. close();
6. print(char ch);
7. print (int i);
8. print (double d);
9. print (boolean b);
10. print (String s);
11. println(char ch);
12. println (int i);
13. println(double d);
14. println(boolean b);
15. println(String s);
Example:
import java.io.*;
classPrintWriterDemo {
public static void main(String[] args)throws IOException {
FileWriterfw=new FileWriter("cricket.txt");
PrintWriter out=new PrintWriter(fw);
out.write(100);
out.println(100);
out.println(true);
out.println('c');
out.println("SaiCharan");
out.flush();
out.close();
}
}
d100
true
c
SaiCharan
What is the difference between write(100) and print(100)?
- In the case of write(100) the corresponding character "d" will be added to the File but in the case of print(100) "100" value will be added directly to the File.
Note 1:
- The most enhanced Reader to read character data from the File is BufferedReader.
- The most enhanced Writer to write character data to the File is PrintWriter.
Note 2:
- In general we can use Readers and Writers to handle character data. Where as we can use InputStreams and OutputStreams to handle binary data(like images, audio files, video files etc).
- We can use OutputStream to write binary data to the File and we can use InputStream to read binary data from the File.
Diagram:
Requirement:
- Write a program to perform File merge(combine) operation.
Diagram:
Program:
import java.io.*;
class FileWriterDemo1 {
public static void main(String[] args)throws IOException {
PrintWriter pw=new PrintWriter("file3.txt");
BufferedReaderbr=new BufferedReader(new
FileReader("file1.txt"));
String line=br.readLine();
while(line!=null) {
pw.println(line);
line=br.readLine();
}
br=new BufferedReader(new FileReader("file2.txt"));
line=br.readLine();
while(line!=null) {
pw.println(line);
line=br.readLine();
}
pw.flush();
br.close();
pw.close();
}
}
Requirement:
- Write a program to perform file merge operation where merging should be performed line by line alternatively.
Diagram:
Program:
import java.io.*;
class FileWriterDemo1 {
public static void main(String[] args)throws IOException {
PrintWriter pw=new PrintWriter("file3.txt");
BufferedReader br1=new BufferedReader(new FileReader("file1.txt"));
BufferedReader br2=new BufferedReader(new
FileReader("file2.txt"));
String line1=br1.readLine();
String line2=br2.readLine();
while(line1!=null||line2!=null) {
if(line1!=null) {
pw.println(line1);
line1=br1.readLine();
}
if(line2!=null) {
pw.println(line2);
line2=br2.readLine();
}
}
pw.flush();
br1.close();
br2.close();
pw.close();
}
}
Requirement:
- Write a program to merge data from all files present in a folder into a new file
Program:
import java.io.*;
classTotalFileMerge {
public static void main(String[] args)throws IOException {
PrintWriter pw=new PrintWriter("output.txt");
File f=new File("E:\\xyz");
String[] s=f.list();
for(String s1=s) {
BufferedReader br1=new BufferedReader(new File(f,s1));
String line=br.readLine();
while(line!=null) {
pw.println(line);
line=br.readLine();
}
}
pw.flush();
}
}
Requirement:
- Write a program to delete duplicate numbers from the file.
Diagram:
Program:
import java.io.*;
class FileWriterDemo1 {
public static void main(String[] args)throws IOException {
BufferedReader br1=new BufferedReader(new
FileReader("input.txt"));
PrintWriter out=new PrintWriter("output.txt");
String target=br1.readLine();
while(target!=null) {
boolean available=false;
BufferedReader br2=new BufferedReader(new
FileReader("output.txt"));
String line=br2.readLine();
while(line!=null) {
if(target.equals(line)) {
available=true;
break;
}
line=br2.readLine();
}
}
if(available==false) {
out.println(target);
out.flush();
}
target=br1.readLine();
}
}
Requirement:
- write a program to perform file extraction operation.
Diagram
Program:
import java.io.*;
class FileWriterDemo1 {
public static void main(String[] args)throws IOException {
BufferedReader br1=new BufferedReader(new
FileReader("input.txt"));
PrintWriter pw=new PrintWriter("output.txt");
String line=br1.readLine();
while(line!=null) {
boolean available=false;
BufferedReader br2=new BufferedReader(new
FileReader("delete.txt"));
String target=br2.readLine();
while(target!=null) {
if(line.equals(target)) {
available=true;
break;
}
target=br2.readLine();
}
if(available==false) {
pw.println(line);
}
line=br1.readLine();
}
pw.flush();
}
}