轉換流
所謂轉換流,就是在字節流和字符流之間的一個橋樑,有了轉換流,如果沒有指定字符編碼,默認編碼爲GBK.
爲了提高效率,可以在中間建立一個緩衝數組,包裝到BufferedWriter/BufferedReader中,避免頻繁調用切換器
例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out = new BufferedWriter(new OutputStreaWriter(System.in))
API文檔中抓轉換流中的構造方法:
InputStreamReader中的構造方法*
InputStreamReader(InputStream in)
//創建一個使用默認字符集的InputStreamReader
InputStreamReader(InputStream in, charset cs)
//創建使用給定字符集的InputStreamReader
InputStreamReader(InputStream in,charsetDecoder dec)
//創建使用給定字符集解碼器的InputStreamReader
InputStreamReader(InputStream in, String charsetName)
//創建使用指定字符集的InputStreamReader
方法摘要
void close()
//關閉流並釋放
String getEncoding()
//返回流的編碼名稱
int read()
//讀取單個字符
boolean ready()
//判斷此流是否已經準備好用去讀取
OutputStreamWriter:
語法格式:
Writer out = new BufferedWriter(new OutputStreamWriter(System.in))
構造方法摘要:
OutputStreamWriter(OutputStream out)
//創建默認編碼的OutputStreamWriter
OutputStreamWriter(OutputStream ,Charset cs)
//創建使用給定字符集OutputStreamWriter
OutputStreamWriter(OutputStream out, CharsetEncoder enc)
//創建使用給定字符集編碼的OutputStreamWrite
OutputStreamWriter(OutputStream out, String charsetName)
//創建使用指定字符集的 OutputStreamWriter。
方法摘要:
void close()
//關閉資源
void flush()
//刷新緩存
String getEncoding()
//返回流中的字符編碼
void write(char[] cbuf, int off, int len)
//寫入字符數組的某一部分
void write(int c)
// 寫入單個字符
void write(String str, int off, int len)
// 寫入字符串的某一部分。
下面舉個例子來說明轉換流的用法:
package Practice;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ConversionIO {
/**
* 轉換流
* @param args
* 所謂轉換流,就是將字節流轉換爲字符流,作爲字節流和字符流的轉換的橋樑
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//獲取便準輸入流
InputStream in = System.in;
//將字節流轉換爲字符流
InputStreamReader inputStreamReader = new InputStreamReader(in);
//緩衝字符流
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
//讀取行數內容
String string = null;
while ((string = bufferedReader.readLine()) != null) {
if (條件語句) {
//執行語句
System.out.println("程序測試完畢!");
}
System.out.println("程序測試完畢!");
}
}
}