1.用?InputStream?&?OutputStream?這兩個基類來進行讀寫操作
InputStream?中的?FileInputStream?類似一個文件句柄,通過它來對文件進行操作,類似的,在?
OutputStream?中我們有?FileOutputStream?這個對象。
用FileInputStream?來讀取數據的常用方法是:
FileInputStream?fstream?=?new?FileInputStream(args[0]);
DataInputStream?in?=?new?DataInputStream(fstream);
用?in.readLine()?來得到數據,然后用?in.close()?關閉輸入流。
用FileOutputStream?來寫入數據的常用方法是:
FileOutputStream?out?out?=?new?FileOutputStream("myfile.txt");????
PrintStream?p?=?new?PrintStream(?out?);
用?p.println()?來寫入數據,然后用?p.close()?關閉輸入。
代碼如下:
//?FileInputDemo
//?Demonstrates?FileInputStream?and?DataInputStream
import?java.io.*;
class?FileInputDemo?{
??public?static?void?main(String?args[])?{
????//?args.length?is?equivalent?to?argc?in?C
????if?(args.length?==?1)?{
??????try?{
????????//?Open?the?file?that?is?the?first?command?line?parameter
????????FileInputStream?fstream?=?new?FileInputStream(args[0]);
????????//?Convert?our?input?stream?to?a?DataInputStream
????????DataInputStream?in?=?new?DataInputStream(fstream);
????????//?Continue?to?read?lines?while?there?are?still?some?left?to?read
????????while?(in.available()?!=0)?{
??????????//?Print?file?line?to?screen
??????????System.out.println?(in.readLine());
????????}
????????in.close();
??????}?catch?(Exception?e)?{
????????System.err.println("File?input?error");
??????}
????}
????else
??????System.out.println("Invalid?parameters");
??}
}
//?FileOutputDemo
//?Demonstration?of?FileOutputStream?and?PrintStream?classes
import?java.io.*;
class?FileOutputDemo?
{????
??public?static?void?main(String?args[])??{??????????????
??FileOutputStream?out;?//?declare?a?file?output?object
????PrintStream?p;?//?declare?a?print?stream?object
try?{
??//?connected?to?"myfile.txt"
??????out?=?new?FileOutputStream("myfile.txt");
??????//?Connect?print?stream?to?the?output?stream
??????p?=?new?PrintStream(?out?);
??????p.println?("This?is?written?to?a?file");
??????p.close();
????}?catch?(Exception?e)?{
??????System.err.println?("Error?writing?to?file");
????}
??}
}
2.JDK?1.1中,支持兩個新的對象?Reader?&?Writer,?它們只能用來對文本文件進行操作,而?
JDK1.1中的?InputStream?&?OutputStream?可以對文本文件或二進制文件進行操作。
用FileReader?來讀取文件的常用方法是:
FileReader?fr?=?new?FileReader("mydata.txt");
BufferedReader?br?=?new?BufferedReader(fr);?
用?br.readLing()?來讀出數據,然后用br.close()?關閉緩存,用fr.close()?關閉文件。
用?FileWriter?來寫入文件的常用方法是:
FileWriter?fw?=?new?FileWriter("mydata.txt");
PrintWriter?out?=?new?PrintWriter(fw);??
在用out.print?或?out.println?來往文件中寫入數據,out.print?和?out.println的唯一區別是后者寫
入數據或會自動開一新行。寫完后要記得?用out.close()?關閉輸出,用fw.close()?關閉文件。???
//?FileReadTest.java
//?User?FileReader?in?JDK1.1?to?read?a?file?
import?java.io.*;
class?FileReadTest?{??????
??public?static?void?main?(String[]?args)?{
????FileReadTest?t?=?new?FileReadTest();
????t.readMyFile();
}?
????
??void?readMyFile()?{?
????String?record?=?null;
????int?recCount?=?0;?
????try?{?
FileReader?fr?=?new?FileReader("mydata.txt");
???????BufferedReader?br?=?new?BufferedReader(fr);
???????record?=?new?String();
???????while?((record?=?br.readLine())?!=?null)?{
?????????recCount++;
?????????System.out.println(recCount?+?":?"?+?record);?
}
br.close();
fr.close();?
?????}?catch?(IOException?e)?{?
?????????System.out.println("Uh?oh,?got?an?IOException?error!");
?????????e.printStackTrace();
?????}
}?
??
}????
//?FileWriteTest.java
//?User?FileWriter?in?JDK1.1?to?writer?a?file?
import?java.io.*;
class?FileWriteTest?{??????
??public?static?void?main?(String[]?args)?{
????FileWriteTest?t?=?new?FileWriteTest();
????t.WriteMyFile();
}?
????
??void?WriteMyFile()?{?
????try?{?
FileWriter?fw?=?new?FileWriter("mydata.txt");
PrintWriter?out?=?new?PrintWriter(fw);????
out.print(“hi,this?will?be?wirte?into?the?file!”);???
out.close();
fw.close();
?????}?catch?(IOException?e)?{?
?????????System.out.println("Uh?oh,?got?an?IOException?error!");
?????????e.printStackTrace();
?????}
}?
??
}????