Java中IO流介紹
1 IO流的分類
第一種分類 :輸入流 , 輸出流
第二中類: 檔案流,管道流,網路流
2 java中的一次流的操作建立的資源: java中的流物件 ,作業系統產生的流資源 。
所以在使用流結束後,需要呼叫close()。因為java的垃圾處理器只會回收java虛擬機器中建立的java流物件,對於作業系統產生的流資源則不會回收。
3 輸入和輸出是對應用程式而言的。
InputStream 所有輸入流的抽象
方法摘要 | |
---|---|
int |
返回此輸入流下一個方法呼叫可以不受阻塞地從此輸入流讀取(或跳過)的估計位元組數。 |
void |
close() 關閉此輸入流並釋放與該流關聯的所有系統資源。 |
void |
mark(int readlimit) 在此輸入流中標記當前的位置。 |
boolean |
測試此輸入流是否支援 mark 和 reset 方法。 |
abstract int |
read() 從輸入流中讀取資料的下一個位元組。 |
int |
read(byte[] b) 從輸入流中讀取一定數量的位元組,並將其儲存在緩衝區陣列 b 中。 |
int |
read(byte[] b, int off, int len)
將輸入流中最多 len 個數據位元組讀入 byte 陣列。 |
void |
reset() 將此流重新定位到最後一次對此輸入流呼叫 mark 方法時的位置。 |
long |
skip(long n) 跳過和丟棄此輸入流中資料的 n 個位元組。 |
OutputStream 所有輸出流的抽象
方法摘要 | |
---|---|
void |
close() 關閉此輸出流並釋放與此流有關的所有系統資源。 |
void |
flush() 重新整理此輸出流並強制寫出所有緩衝的輸出位元組。 |
void |
write(byte[] b) 將 b.length 個位元組從指定的 byte 陣列寫入此輸出流。 |
void |
write(byte[] b, int off, int len)
將指定 byte 陣列中從偏移量 off 開始的 len 個位元組寫入此輸出流。 |
abstract void |
write(int b) 將指定的位元組寫入此輸出流。 |
4 檔案輸入輸出流
FileInputStream
FileOutputStream
舉例說明
public class DemoFileIOStream
{
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
// 寫入資料到檔案中
FileOutputStream out = new FileOutputStream("out.txt");
out.write("www.baidu.com".getBytes());
out.close();
// 讀取檔案中的資料到程式中
File f = new File("t1.txt");
FileInputStream in = new FileInputStream(f);
byte[] buf = new byte[1024];
int len = in.read(buf);
in.close();
System.out.println(new String(buf,0,len));
}
}
5 二進位制檔案和文字檔案的區別
0-255 之間的字元組成的檔案是文字檔案。
文字檔案以外的檔案是二進位制檔案。
5.1 文字檔案操作類 Reader 和 Writer
字元操作流 FileReader 和 FileWriter 這兩個類主要用於文字檔案流的操作
舉例說明:
public class DemoReaderAndWriter
{/**
* @param args
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
FileWriter fw = new FileWriter("fw.txt");
fw.write("十一放長假了");
fw.close();
FileReader in = new FileReader("fw.txt");
char[] buf = new char[1024];
int len = in.read(buf);
in.close();
System.out.println(new String(buf,0,len));
}}