将字节流转换为字符流
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class Test04 {
public static void main(String[] args) throws IOException {
test2();
}
public static void test1() throws IOException {
InputStream is = new FileInputStream("D:\\Java\\hello.txt");
InputStreamReader isr = new InputStreamReader(is);
int data;
while ((data = isr.read()) != -1) {
System.out.println((char) data);
}
isr.close();
is.close();
}
public static void test2() throws IOException {
OutputStream os = new FileOutputStream("D:\\Java\\hello.txt");
OutputStreamWriter osw = new OutputStreamWriter(os, "gbk");
InputStreamReader isr = new InputStreamReader(System.in, "gbk");
int data;
System.out.println("请输入数据:");
while((data=isr.read())!='q'){
osw.write(data);
osw.flush();
}
isr.close();
os.close();
}
}
为字符输入输出流添加缓冲
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test05 {
public static void main(String[] args) throws IOException {
test2();
}
public static void test1() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in, "gbk");
BufferedReader br = new BufferedReader(isr);
System.out.println("请输入数据:");
String str = null;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
isr.close();
}
public static void test2() throws IOException {
FileReader fr = new FileReader("D:\\Java\\hello.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("D:\\Java\\world.txt");
BufferedWriter bw = new BufferedWriter(fw);
String str = null;
while ((str = br.readLine()) != null) {
bw.write(str);
}
bw.flush();
System.out.println("文件复制成功!");
bw.close();
br.close();
}
}