FileInputStream與FileOutputStream類
FileInputStream與FileOutputStream類
- 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.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();
}
}