Java--转换流详解
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
说明
通过转换流可以解决一定的编码问题
转换流图解
InputStreamReader类
转换流java.io.InputStreamReader
,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集
构造方法
-
InputStreamReader(InputStream in)
: 创建一个使用默认字符集的字符流。 -
InputStreamReader(InputStream in, String charsetName)
: 创建一个指定字符集的字符流。
构造举例,代码如下:
InputStreamReader isr = new InputStreamReader(new FileInputStream("in.txt"));
InputStreamReader isr2 = new InputStreamReader(new FileInputStream("in.txt") , "GBK");
OutputStreamWriter类
转换流java.io.OutputStreamWriter
,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。
构造方法
-
OutputStreamWriter(OutputStream in)
: 创建一个使用默认字符集的字符流。 -
OutputStreamWriter(OutputStream in, String charsetName)
: 创建一个指定字符集的字符流。
构造举例,代码如下:
OutputStreamWriter isr = new OutputStreamWriter(new FileOutputStream("out.txt"));
OutputStreamWriter isr2 = new OutputStreamWriter(new FileOutputStream("out.txt") , "GBK");
转换文件编码
import java.io.*;
/**
* @author Trans
* @date 2020/4/24 11:23 下午
*/
public class Trans {
public static void main(String[] args) throws IOException {
String srcFile = "file_gbk.txt";
String destFile = "file_utf8.txt";
//创建流对象
InputStreamReader isr = new InputStreamReader(new FileInputStream(srcFile),"GBK");
//默认为utf-8
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(srcFile));
//读取数据
char[] cbuf = new char[1024];
int len;
while ((len = isr.read(cbuf))!=-1){
osw.write(cbuf,0,len);
}
//释放资源
osw.close();
isr.close();
}
}
感谢
百度百科黑马程序员
以及勤劳的自己
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。