24.从键盘录入输入流:System.in
//创建输入流:InputStream is =System.in;(字节流)
//把字节数组转换成字符串:new String(bys,0,len);
//转换流:把字节输入流转换成字符输入流InputStreamReader
InputStream is=System.in;
Reader r=new InputStreamReader(is);
25.打印流:只有输出,没有输入。
也是包装流,不具备写出功能。可以把字节输出流转换成字符输出流(通过转换流)
三大特点;
可以自动换行,println()。自动刷新
不能输出字节,但是可以输出其他任意类型
通过某些配置,可以实现自动刷新(只有在调用 println、printf 或 format才有用)
也是包装流,不具备写出功能
* 可以把字节输出流转换成字符输出流
PritStream
PritWriter
//创建打印流对象:PrintWriter pw=new PrintWriter(“a.txt”);
Pw.Println(“4564”);//实现自动换行,与系统无关
//启动自动刷新;PrintWriter pw=new PrintWriter(new FileWriter(“a.txt”),true);
只有println等三个方法才能实现自动刷新
注意:创建FileWriter对象时boolean参数是是否追加,
而创建打印流对象的boolean类型参数是是否自动刷新
26.对象操作流;可以用于读写任意类型的对象;
对象输入流:ObjectInputStream:称为 反序列化流
writeObject
ObjectOutputStream(OutputStream out)
对象输出流;ObjectOutputStream:称为 序列化流
readObject
ObjectInputStream(InputStream in)
注意: 使用对象输出流写出对象,只能使用对象输入流来读取对象
只能将支持 java.io.Serializable 接口的对象写入流中
Serializable: 序列号,是一个标识接口,只起标识作用,没有方法
当一个类的对象需要IO流进行读写的时候,这个类必须实现该接口
//创建对象输入流的对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("a.txt"));
//创建对象输出流的对象
//FileOutputStream fos = new FileOutputStream("a.txt");
//ObjectOutputStream oos = new ObjectOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("a.txt"));
27.解决对象输入流读取对象出现异常的问题:把学生对象装入到集合中,然后对这个集合进行输出和输入
//创建对象输出流的对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.txt"));
oos.writeObject(list);
28.现在有几个问题:即使什么时候用的是是字节流什么时候是字符流
OutputStreamWriter是字符流通向字节流的桥梁,传入字符直接输出字节(自动转换)
InputStreamReader 是字节流通向字符流的桥梁,
29.Properties表示一个持久的属性集。属性列表的键和值都是字符串
Properties prop=new Properties();
Properties和IO流结合的功能:
void load(Reader reader) 只能接收打印流
void list(PrintWriter out)
void store(Writer writer, String comments)可以接受任意类型的输出流
30..编码表:把计算机语言转换成我们能看懂的字符
ASCII
GB2312 --- GBK完全包含ASCII,并且有中文
Unicode 所有的字符都占2个字节,包含了大部分国家的码表
UTF-8 长度可变的码表,更加灵活
ANSI:本地编码表(不是具体的编码表,根据系统的环境语言而变化) gbk
java中字符串的编码:默认使用的ANSI(gbk)
乱码:编码保持前后一致即可解决 |
|