IO:FileInputStream和FileOutputStream

FileInputStream和FileOutputStream類分別用來創建磁盤文件的輸入流和輸出流對象,通過它們的構造函數來指定文件路徑和文件名。創建FileInputStream對象實例時,指定的文件應該是存在和可讀的,創建FileOutputStream實例對象時,如果指定的文件已經存在,這個文件中的原來內容就會被覆蓋。

對於一個磁盤文件來創建FileInputStream類的Stream對象可以有下面兩種方式:
(1)FileInputStream fis = new FileInputStream("test.txt");
(2)File f = new File("test.txt");
FileInputStream fis = new FileInputStream(f);
第二種可以對test文件進行很多的File類的操作,比如判斷是否存在,是否可寫等等。這是File那篇文章裏面的內容。

創建一個FileOutputStream實例對象的時候,可以指定還不存在的文件名,但是不能指定一個被其它程序打開的文件。

下面來看一個例子:用FileOutputStream類向文件中寫入一個串字符,然後用FileInputStream讀出寫入的內容。

import java.io.*;
public class FileStream {

public static void main(String[] args) throws Exception{
FileOutputStream out = new FileOutputStream("test.txt");
out.write("www.cublog.com".getBytes());//讀取字符串,write()不能直接讀取字符串,所以只能轉換成字節數

out.close();//關閉輸入文件對象


byte[] buf = new byte[1024];
File f = new File("test.txt");
FileInputStream in = new FileInputStream(f);
int len = in.read(buf);//取文件的長度

System.out.println(new String(buf,0,len));
in.close();
}
}


Reader類和Writer類:

java中的字符是採用Unicode編碼的,是雙字節的。上面的FileInputStream和FileOutputStream都是用來處理字節的,在處理上面的字符串的時候需要把字符串轉換成字節以後再寫入到文件,在讀取字符串的時候也是先讀到的字節數組,然後再將它轉換成爲字符串的。這就需要編寫額外的字節與字符之間轉換的代碼。java中專門有一個單獨的類用來對IO設備進行字符的輸入和輸出,例如剛纔的例子就可以用FileReader和FileWriter。

Reader類和Writer類專門用於文本文件的讀取,而InputStream和OutputStream則是用於對二進制格式文件的內容讀取

由於上面的例子是文本文件,所以可以用FileReader和FileWriter類來改寫一下:

import java.io.*;
public class FileStream {

public static void main(String[] args) throws Exception{

FileWriter out = new FileWriter("test.txt");
out.write("www.cublog.com");
out.close();

char[] buf = new char[1024];
FileReader in = new FileReader("test.txt");
int len = in.read(buf);
System.out.println(new String(buf,0,len));
in.close();

}
}

發佈了50 篇原創文章 · 獲贊 0 · 訪問量 4661
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章