-
FileOutputStream(文件輸出流)操作對象是一個文件。
(1)構造函數:
構造函數按接收參數來分可分為:
1.File對象。
1)public FileOutputStream(File file)
2)public FileOutputStream(File file, boolean append)
2.表示文件地址的String字符串。
1) public FileOutputStream(String name)
2) public FileOutputStream(String name, boolean append)
(2)寫方法write()
write返回值:
1)如果沒有寫完相應內容,每返回的是每次的寫入(byte型)內容;
2)如果寫到內容結尾,返回-1;
write方法按照接收參數方法分類可以分為:
1)public void write(byte b[])接受一個數組對象,將數組中對象中的內容輸出到文件中。
2)public void write(byte b[], int off, int len),將數組中的off角標開始后的len個字節寫入。
3)public void write()不接收任何對象,每次寫入一個字節8byte數據。
用1)相比于3)可以提高效率,
(3)寫完后需要close()關閉輸出流。
(4)例子:
// 第一步指定輸出流位置
File file = new File("d:\\text.txt");
//使用FileOutputStream創建輸出流
FileOutputStream out = new FileOutputStream(file);
//指定寫入數據,注意write方法只接受byte[],如果是其他類型變量需要先存儲在byte數組內
byte[] ob = "hallo java!".getBytes();
//調用write方法寫入數據
out.write(ob);
out.close();
注意:如果采用上述FileOutputStream方法,多次寫入會覆蓋原來的文件內容。如果不想覆蓋可采用第二個構造方法,并設置append參數為true;
-
FileOutputStream(文件輸入流)操作對象也是一個文件。
(1)構造函數
1.FileInputStream(File file);
2.FileInputStream(String name);
(2)讀方法read()
1)如果沒有讀到文件內容結尾,每返回的是每次的讀入的(byte型)內容;
2)如果讀到到文件內容結尾,返回-1;
read()方法重載類型:
1)public int read(byte b[])接受一個數組對象,每次從文件中讀取相應byte[]數組大小的內容。
2)public int read(byte b[], int off, int len),每次從文件中讀取len長度的內容到byte數組中,并且從byte數組的off處開始存儲。
3)public int read()不接收任何對象,每次寫入一個字節8bit數據。
用1)相比于3)可以提高效率,
返回值為每次讀入的長度而不是文件中內容的二進制數據
(3)寫完后close(),關閉輸入流;
inputStream的read()雖然返回int,但由于此類是面向字節流的,一個字節占8個位,所以返回 0 到 255** 范圍內的 int 字節值。如果因為已經到達流末尾而沒有可用的字節,則返回值 -1。因此對于不能用0-255來表示的值就得用字符流來讀取!比如說漢字.
Reader類的read()方法返回類型為int :作為整數讀取的字符(占兩個字節共16位),范圍在 **0 到 65535 之間 (0x00-0xffff),如果已到達流的末尾,則返回 -1
(4)例子
// 第一步指定輸出流位置
File file = new File("d:\\text.txt");//hello java!
long length = file.length();
//使用FileInputStream創建輸出流
FileInputStream in = new FileInputStream(file);
//指定一次讀取多長的數據
byte[] ib = new byte[(int) length];
//循環讀取文件內容
int len = 0;
while((len = in.read(ib)) != -1){
System.out.println(len);//len = 11
}
System.out.println(len);//len = -1