Java 学习(24)---(IO流之字符流)

简介: 字符流字节流操作中文数据不是特别的方便,所以就出现了转换流。转换流的作用就是把字节流转换字符流来使用。转换流其实是一个字符流字符流 = 字节流 + 编码表编码表A:就是由字符和对应的数值组成的一张表...

字符流

字节流操作中文数据不是特别的方便,所以就出现了转换流。转换流的作用就是把字节流转换字符流来使用。

转换流其实是一个字符流

字符流 = 字节流 + 编码表

编码表

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();
}
目录
相关文章
|
3月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
104 43
Java学习十六—掌握注解:让编程更简单
|
2月前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
52 9
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
3月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
45 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
2月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
61 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
3月前
|
Java
Java 中 IO 流的分类详解
【10月更文挑战第10天】不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。
69 0
|
3月前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
41 0
|
5月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
6月前
|
Java 大数据
解析Java中的NIO与传统IO的区别与应用
解析Java中的NIO与传统IO的区别与应用