1 IO流的分類
第一種分類 :輸入流 , 輸出流
第二中類: 文件流,管道流,網絡流
2 java中的一次流的操作創建的資源: java中的流對象 ,操作系統產生的流資源 。
所以在使用流結束後,需要調用close()。因爲java的垃圾處理器只會回收java虛擬機中創建的java流對象,對於操作系統產生的流資源則不會回收。
3 輸入和輸出是對應用程序而言的。
InputStream 所有輸入流的抽象
方法摘要 | |
---|---|
int |
available() 返回此輸入流下一個方法調用可以不受阻塞地從此輸入流讀取(或跳過)的估計字節數。 |
void |
close() 關閉此輸入流並釋放與該流關聯的所有系統資源。 |
void |
mark(int readlimit) 在此輸入流中標記當前的位置。 |
boolean |
markSupported() 測試此輸入流是否支持 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));
}}