內(nèi)容梗概:
- Java流式輸入/輸出的原理
- Java流類的分類
- 輸入/輸出流類
- 常見的節(jié)點流和處理流
- 文件流
- 緩沖流
- 數(shù)據(jù)流
- 轉(zhuǎn)換流
- Print流
- Object流
在Java程序中,對于數(shù)據(jù)的輸入/輸出操作以"流"(stream)方式進行:J2SDK提供了各種各樣的"流"類,用以獲取不同種類的數(shù)據(jù):程序中通過標準的方法輸入或輸出數(shù)據(jù)
Paste_Image.png
以上的不同管道都是java的流.
輸入/輸出流的分類.
java.io包中定義了多個流類型(類或抽象類)來實現(xiàn)輸入/輸出功能:可以從不同的角度對其進行分類:
- 按數(shù)據(jù)流的方向不同可以分為輸入流和輸出流;
- 按處理數(shù)據(jù)單位不同可以分為字節(jié)流和字符流;
- 按照功能不同可以分為節(jié)點流和處理流.
J2SDK 鎖提供的所有流類型位于包java.io內(nèi)都分別繼承自以下四種抽象流類型.
輸入流:InputStream(字節(jié)流Stream) Reader(字符流)
輸出流:OutputStream,Writer.
繼承自InputStream的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字節(jié)(8bit).
InputStream的基本方法
int read() throws IOException
//讀取一系列字節(jié)并存儲到一個數(shù)組buffer
//返回實際讀取的字節(jié)數(shù),如果讀取前已到輸入流的末尾返回-1
int read(byte[] buffer) throws IOException
//讀取length個字節(jié)
//并存儲到一個字節(jié)數(shù)組buffer,從length位置開始
//返回實際讀取的字節(jié)數(shù),如果讀取前已到輸入流的末尾返回-1
int read(byte[] buffer, int offset(從這個位置開始讀取),
intlength要求讀 幾個字節(jié)) throws IOException
//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException
//跳過n個字節(jié)不讀,返回實際跳過的字節(jié)數(shù)
long skip(long n) throws IOException
OutputStream的基本方法
//向輸出流中寫入一個字節(jié)數(shù)據(jù),該字節(jié)數(shù)據(jù)為參數(shù)b的低8位
void write(int b) throws IOException
//將一個字節(jié)類型的數(shù)組中的數(shù)據(jù)寫入輸出流
void write(byte[] b) throws IOException
//將一個字節(jié)類型的數(shù)組中的從指定位置(off)開始的len個字節(jié)寫入到輸出流
void write(byte[] b,int off, int length) throws IOException
//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException
//將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地,防止在內(nèi)存里的數(shù)據(jù)被close中斷掉,.
void flush() throws IOException
在內(nèi)存里裝滿數(shù)據(jù)之后整體寫入硬盤,這樣可以節(jié)約硬盤,一個字節(jié)為8bit,一個字符為16bit,一個漢字是兩個字節(jié)
Reader(16bit)的基本方法
//讀取一個字符并以正數(shù)的形式返回(0-255)
//如果返回-1已到輸入流的末尾
int read() throws IOException
//讀取一系列字符并儲存到一個數(shù)組buffer
//返回實際讀取的字符數(shù),如果讀取前已經(jīng)到輸入流的末尾返回-1
int read(char[] chuf) throws IOException
//讀取length個字符
//并存儲到一個數(shù)組buffer,從length位置開始
//返回實際讀取的字符數(shù),如果讀取前已到輸入流的末尾返回-1
int read(char[] chuf,int offset,int length) throws IOException
//關(guān)閉流釋放內(nèi)存資源
void close() throws IOException
//跳過n個字符不讀,返回實際跳過的字符數(shù)
long skip(long n) throws IOException
Write的基本方法(toCharArray)
多了一個可以將String輸出String的方法.用的是toCharArray的方法
toCharArray的方法是將字符串轉(zhuǎn)化成字符數(shù)組.相當于spit里的分個拆解字節(jié)......
文件流
import java.io.*;
public class TestFileInputStream
{ public static void main(String[] args)
{ int b = 0;
FileReader in = null;
try
{ in = new FileReader("H:\\java1\\stream\\TestFileInputStream.java");
}
catch (FileNotFoundException e)
{ System.out.println("找不到文件");
System.exit(-1);
}
try
{
long num = 0;
while((b=in.read())!=-1)
{System.out.print((char)b);
num++;}
in.close();
System.out.println();
System.out.println ("只讀取了"+num+"個字節(jié)");
}
catch (IOException e1)
{ System.out.println("文件讀取錯誤");System.exit(-1);
}
}
}
緩沖流
數(shù)據(jù)流
Paste_Image.png
Print流
Paste_Image.png
Paste_Image.png