對于IO流中的轉換流,顧名思義,就是將字符流轉換成字節流或者是將字節流轉換成字符流的對象。
那么有時候我們得到的是一個字符流,但是我們又需要進行一些計算之類的,或者我們得到的是一個字節流,但是我們又需要進行一些匹配或者是其他使用的時候,我們就可能會用到轉換流,所以轉換流對于我們來說是非常方便實用的。
既然轉換劉是將字符流轉換成字節流或者是將字節流轉換成字符流的對象,所以我們就分別用OutputStreamWriter和InputStreamReader來表示。
首先來說說InputStreamReader字節流轉換成字符流:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws IOException{
//使用輸入設備輸入字符流
InputStream ins = System.in;
//將輸入的字符流信息轉換成字節流
InputStreamReader insr = new InputStreamReader(ins);
//將轉換后的數據存儲到緩沖區
BufferedReader bufr = new BufferedReader(insr);
String str = null;
while((str=bufr.readLine())!=null){
System.out.println(str.toUpperCase());//toUpperCase()使用默認語言環境的規則將此 String 中的所有字符都轉換為大寫。
}
bufr.close();
}
}
然后來講講OutputStreamWriter字節流轉換成字符流
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class Demo {
public static void main(String[] args) throws IOException{
InputStream ins = System.in;
InputStreamReader insr = new InputStreamReader(ins);
BufferedReader bufr = new BufferedReader(insr);
OutputStream outs = System.out;
OutputStreamWriter outsw = new OutputStreamWriter(outs);
BufferedWriter bufw = new BufferedWriter(outsw);
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
精簡一下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Demo {
public static void main(String[] args) throws IOException{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}