字符流是把字节(byte)转换成字符(char)来向文件进行输入输出的。
类InputStreamWrite是把byte流按照指定的编码解析为char流,
类OutputStreamRead是char流按照指定的编码解析成byte流。
package com.test1;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class ByCharString {
public static void main(String[] args)throws IOException {
FileInputStream fis = new FileInputStream("test.txt");
//create InputStreamReader object,fis is a InputStream object,"gbk" is designated to be converted to encoding
InputStreamReader isr = new InputStreamReader(fis,"gbk");
FileOutputStream fos = new FileOutputStream("test1.txt");
//create OutputStreamWriter object,fos is a OutputStream object,"gbk" is designated to be converted to encoding
OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");
char [] input = new char[100];
int i;
while((i=isr.read(input))!=-1){ //returns the number of characters read
osw.write(input,0,i);
}
osw.flush(); //flush the buffer
osw.close(); //close file
fos.close();
isr.close();
fis.close();
}
}
类FileRead和类FileRead也可以进行字符流的输入输出
如:
package com.test1;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class test {
public static void main(String[] args) throws IOException{
//create FileReader object
FileReader fr = new FileReader("test.txt");
//create FileWriter object
FileWriter fw = new FileWriter("test1.txt");
char [] input = new char[100];
int i;
while((i=fr.read(input,0,input.length))!=-1){
fw.write(input, 0, i);
}
fw.close();
fr.close();
}
}
类BufferedWrite和类BufferedRead
这两个类为字符流提供了能够进行读取一行的操作,读取时并不能换行,
只能单独使用newLine()方法进行换行。
package com.test1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class ByBufferedCharStream {
public static void main(String[] args)throws IOException {
FileInputStream fis = new FileInputStream("test.txt");
FileOutputStream fos = new FileOutputStream("test1.txt");
InputStreamReader isr = new InputStreamReader(fis,"gbk");
OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");
//create BufferedReader object,isr is a InputStreamReader object
BufferedReader br = new BufferedReader(isr);
//create BufferedWrite object,osw is a OutputStreamReader object
BufferedWriter bw = new BufferedWriter(osw);
String str;
while((str=br.readLine())!=null){ //Read one line at a time
bw.write(str); //Write one line at a time
bw.newLine(); //line feed
}
bw.flush();
bw.close();
br.close();
osw.close();
fos.close();
isr.close();
fis.close();
}
}