本帖最后由 小石姐姐 于 2018-4-26 10:46 编辑
IO流&编码表学习笔记
IO流
|_ 标准流
|_ System.in(InputStream) 键盘录入
|_ System.out(PrintStream) 控制台输出
|_ 转换流
|_ OutputStreamWriter 以操作字符流的方式按字节流写出
|_ InputStreamReader 以操作字符流的方式按字节流读入
|_ 打印流
|_ PrintWriter 具有自动刷新, 自动换行的特点
|_ 对象流
|_ ObjectInputStream 从文件中读入一个对象到内存中
|_ ObjectOutputStream 将内存中的对象写入到文件中标准输入输出流System.err: 标准错误流。(命令行输出错误信息)
System.in :标准输入流(键盘输入)
是InputStream类,属于字节输入流
system.out: 标准输出流(控制台输出)
是outputStream的子类PrintStream,属于字节输出流转换流
InputStreamReader:字节输入流转字符输入流
是Reader的子类,属于字符输入流
OutputstreamWriter:字符输出流转字节输出流
是Writer 的子类,属于字符输出流特点 转换流也是包装类,需要传入实际的输入输出流对象
打印流 PrintStream:字节打印流 Print Writer:字符打印流 只有输出流的,因为打印是输出操作 注意 打印是输出操作,所以打印流只有输出,没有输入 PrintWriter打印流的特点
可以自动换行, println(). 会根据系统自动确定换行符 不能输出字节, 可以输出其他任意类型(要输出字节需要使用PrintStream) 通过构造方法的配置可以实现自动刷新(flush)(只在调用println, printf, format时有用) 也是包装流, 自身没有写出功能 可以把字节输出流转换为字符输出流 关流不会抛出异常(此类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常) PrintWriter类构造方法
PrintWriter PrintWriter(String filepath) 创建对象 PrintWriter PrintWriter(Writer out, boolean autoFlush): 创建对象, 同时设置是否自动刷新 PrintWriter(OutputStream out, boolean autoFlush): 创建对象, 同时设置是否自动刷新
成员方法void write(String s): 写一个字符串 void print(String s): 输出字符串, 没有换行 void println(String s): 输出字符串并换行. 如果启动了自动刷新, 则会执行自动刷新写入数据 void printf(Locale l, String format, Object... args): 使用指定格式字符串和参数将格式化的字符串写入输出流. 如果启动了自动刷新, 则会执行自动刷新写入数据 void format(Locale l, String format, Object... args): 使用指定格式字符串和参数将格式化的字符串写入输出流. 如果启动了自动刷新, 则会执行自动刷新写入数据
- 对象操作流(都属于字节流)
Properties
编码表
作用: 将计算机二进制数据转换为不同语言的字符 常见编码表的种类
ASCII: 美国标准码. 包含26个英文字母的大写和小写, 数字, 符号 ISO-8859-1: 西方语言编码 GB2312: 国标码 GBK: 国标扩展码 Unicode: 万国码. 支持多国语言字符. UTF-8: Unicode的一种实现方式, 长度可变的码表, 一个字符占用1个或2个字节 ANSI: 本地编码表. 根据系统设置决定编码表
Java String类对于字节和编码的操作
byte[] getBytes(): 获取字符串的byte数组, 使用默认编码 byte[] getBytes(String charsetName): 获取字符串的byte数组, 使用指定编码 String String(byte[] bytes): 将byte数组转化为字符串, 使用默认编码 String String(byte[] bytes, String charsetName): 将byte数组转换为字符串, 使用指定编码 String String(byte[] bytes, int offset, int len, String charsetName): 将byte数组的一部分转换为字符串, 使用指定编码
处理乱码的2种方式:
String通过指定编码转为byte数组, 然后再创建String: (GBK字符串转UTF-8字符串写入文件)
OutputStreamWriter可以指定编码写入文件, 免去使用String通过编码转换为byte数组的步骤
|
|