Java 学习(24)---(IO流之字符流)
字符流
字节流操作中文数据不是特别的方便,所以就出现了转换流。转换流的作用就是把字节流转换字符流来使用。
转换流其实是一个字符流
字符流 = 字节流 + 编码表
编码表
A:就是由字符和对应的数值组成的一张表
B:常见的编码表 ASCII
ISO-8859-1 GB2312 GBK GB18030 UTF-8
C:字符串中的编码问题编码
String -- byte[]
解码
byte[] -- String
IO 流中的编码问题
A:OutputStreamWriter
OutputStreamWriter(OutputStream os): 默 认 编 码 , GBK OutputStreamWriter(OutputStream os,String charsetName): 指定编码。
B:InputStreamReader
InputStreamReader(InputStream is): 默 认 编 码 , GBK InputStreamReader(InputStream is,String charsetName): 指定编码
C:编码问题其实很简单编码只要一致即可
字符流
Reader
|--InputStreamReader
|--FileReader
|--BufferedReader
Writer
|--OutputStreamWriter
|--FileWriter
|--BufferedWriter
案例:复制文本文件 (5 种方式 )
// 基本字符流一次读写一个字符 privatestaticvoid method1(String srcString, String destString) throws IOException { FileReader fr = newFileReader(srcString); FileWriter fw = newFileWriter(destString); int ch = 0; while ((ch = fr.read()) != -1) { fw.write(ch); } fw.close(); fr.close(); }
// 基本字符流一次读写一个字符数组 privatestaticvoid method2(String srcString, String destString) throws IOException { FileReader fr = newFileReader(srcString); FileWriter fw = newFileWriter(destString); char [] chs = newchar [1024]; int len = 0; while ((len = fr.read(chs)) != -1) { fw.write(chs, 0, len); } fw.close(); fr.close(); }
// 字符缓冲流一次读写一个字符 privatestaticvoid method3(String srcString, String destString) throws IOException { BufferedReader br = newBufferedReader(newFileReader(srcString)); BufferedWriter bw = newBufferedWriter(newFileWriter(destString)); int ch = 0; while ((ch = br.read()) != -1) { bw.write(ch); } bw.close(); br.close(); }
// 字符缓冲流一次读写一个字符数组 privatestaticvoid method4(String srcString, String destString) throws IOException { BufferedReader br = newFileReader(srcString)); newBufferedReader(newFileWriter(destString)); char [] chs = newchar [1024]; int len = 0; while ((len = br.read(chs)) != -1) { bw.write(chs, 0, len); } bw.close(); br.close(); }
// 字符缓冲流一次读写一个字符串 privatestaticvoid method5(String srcString, String destString) throws IOException { BufferedReader br = newFileReader(srcString)); newBufferedReader(newFileWriter(destString)); String line = null; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); bw.flush(); }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java 学习(23)---(IO流之字节流)
字节流 IO 用于在设备间进行数据传输的操作 1.分类: 字节流 |-- 字节输入流 InputStream int read(): 一次读取一个字节 int read(byte[] bys): 一次读取一个字节数组 |--FileInputStream |--BufferedInputStream |-- 字节输出流 OutputStream void write(int by): 一次写一个字节 void write(byte[] bys,intindex,intlen): 一次写一个字节数组的一部分 |--FileOutputStream |--BufferedOutputStream 字符流 |-- 字符输入流 Reader int read(): 一次读取一个字符 int read(char[] chs): 一次读取一个字符数组 |--InputStreamReader |--FileReader |--BufferedReader String readLine(): 一次读取一个字符串 |-- 字符输出流 Writer void write(int ch...
- 下一篇
Java 学习(25)---(IO流之数据流 / 内存操作流 / 打印流 / 标准输入输出流)
数据流 可以读写基本数据类型的数据 数据输入流: DataInputStream DataInputStream(InputStream in) 数据输出流: DataOutputStream DataOutputStream(OutputStream out) privatestaticvoid read() throws IOException { // DataInputStream(InputStream in) // 创建数据输入流对象 DataInputStream dis = newDataInputStream( new FileInputStream("dos.txt")); // 读数据 byte b = dis.readByte(); short s = dis.readShort(); int i = dis.readInt(); long l = dis.readLong(); float f = dis.readFloat(); double d = dis.readDouble(); char c = dis.readChar(); boolean bb ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器