JAVA中转换流InputStream和OutputStream设置编码方式
1、基本思路:将字符流中FileReader和FileWriter换成其父类(转换流)
2、代码实现:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
public class 转换流 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
System.out.println(System.getProperty("file.encoding"));//可以显示默认的编码方式
Reader reader=null;
Writer writer=null;
try {
//输入流将文本文件从D盘输入到内存
reader=new InputStreamReader(new FileInputStream(new File("D:\\蓝桥.txt")),"UTF-8");//设置编码方式即可
//输出流将文本文件从内存输出到E盘
writer=new OutputStreamWriter(new FileOutputStream(new File("D:\\蓝桥33.txt")),"UTF-8");
/*
* 接下来需要一个字符一个字符的去读,Java中的处理机制会将文件的 的每一个字符转化成字节,再转化成一个int型的数字。
*/
char[] c=new char[100];
while(true) {
int i= reader.read(c);
//当这个int型数字变为-1的时候,表明读取结束
if(i==-1) {
break;
}
System.out.println(new String(c));
//读完以后就开始往里面写了
writer.write(c,0,i);
}
} catch (FileNotFoundException e) {
System.out.println("你输入的文件路径是错误的!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("读取异常!");
e.printStackTrace();
}
//使用完IO流之后一定要关闭,可以使用finally类去关闭
finally {
if(reader!=null) {
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(writer!=null) {
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}