參考http://blog.csdn.net/gyflyx/article/details/6439719
- FileInputStream和FileOutputStream類分別用來創建磁盤文件的輸入流和輸出流對象,通過它們的構造函數來指定文件路徑和文件名。
- 創建FileInputStream實例對象時,指定的文件應當是存在和可讀的。創建FileOutputStream實例對象時,如果指定的文件已經存在,這個文件中的原來內容將被覆蓋清除。
- 對同一個磁盤文件創建FileInputStream對象的兩種方式: (1)FileInputStream inOne = new FileInputStream("hello.test"); (2)File f = new File("hello.test"); FileInputStream inTwo = new FileInputStream(f);
- 創建FileOutputStream實例對象時,可以指定還不存在的文件名,但不能指定一個已被其他程序打開了的文件。
思考:要將A文件的內容寫入B文件,在程序代碼中,是用輸出類對象,還是用輸入類對象來連接A文件並完成對A文件的操作呢?
(要記住:這里說的輸入和輸出的概念都是相對這個應用程序而言的,而不相對這個文件而言的。如下圖)
所以我們應該創建一個輸入類來讀取A文件的內容,然后創建一個輸出類將這些內容輸出到B文件中。(如下圖)
編程實例:用FileOutputStream類向文件中寫入一個串字符,然后用FileInputStream讀出寫入的內容。
//FileStream.java
import java.io.*;
public class FileStream{
public static void main(String[] args)
throws Exception {
FileOutputStream out = new FileOutputStream("hello.txt");
out.write("
www.sina.com.cn".getBytes());
//把字符串轉化為字節數組並寫入到流中
out.close();
byte[] buf = new byte[1024];
File f = new File("hello.txt");
FileInputStream in = new FileInputStream(f);
int len = in.read(buf);
//讀取內容到字節數組中
System.out.println(new
String(buf,0,len));
//String構造函數把字節數組轉化為字符串
in.close();
}
}
Reader類和Writer類
- Reader和Writer是所有字符流類的抽象基類,用於簡化對字符串的輸入輸出編程,即用於讀寫文本數據。
- 二進制文件和文本文件的區別。嚴格的說文件系統中的每個文件都是二進制文件。各種文本字符是由一個或幾個字節組成的,其中每個字節的數 據不能是任意的。如果一個文件中的每個字節或每相鄰的幾個字節中的數據都可以表示成某種字符,我們就可以稱這個文件為文本文件。可見文本文件只是二進制文 件的一種特例。為了與文本文件相區別,人們又把文本文件以外的文件稱之為二進制文件。在概念上我們可以簡單的認為:如果一個文件專用於存儲文本字符而沒有 包含字符之外的其他數據,就稱之為文本文件,除此之外的文件就是二進制文件。
Reader與Writer類及其子類(FileReader和FileWriter類等)主要用於讀取文本格式的內容,而InputStream和OutputStream類及它們的子類主要讀取二進制格式的內容。
編程實例:用FileWriter類向文件中寫入一個串字符,然后用FileReader讀出寫入的內容。
//FileStream2.java
import java.io.*;
public class FileStream2{
public static void main(String[] args) throws Excetpion {
FileWriter out = new FileWriter("hello2.txt");
out.close();
char[] buf = new char[1024]; //字符數組
FileReader in = new FileReader("hello2.txt");
int len = in.read(buf);
//此時的read方法可以讀取一個字符或幾個字符,len代表實際讀取到的字符的個數。
System.out.println(new String(buf,0,1024));
//String構造函數把字符數組轉化為字符串。
in.close();
}
}
