知识点:
内存输出流: ByteOUtputStream:可以解决中文乱码问题
该输出流可以向内存中写数据,
把
内存当作一个
缓冲区, 写出之后可以一次性获取出所有数据
可以不关闭
特点:
将整个内存当做一个缓冲区,往里面写数据
写完毕后,可以一次性的从内存里面获取里面所有的数据
通过toByteArray() toString() 实现
成员方法:
toByteArray():创建一个新byte数组
toString(); 使用平台默认编码表,转成字符串,接收缓冲区的内容
练习:定义一个文件输入流,调用read(byte[] b)方法,将a.txt文件中的内容打印出来(byte数组大小限制为5)
对象操作流:
ObjecOutputStream
:对象输出流.....
,
序列化流
:::
将对象写在文件上,类似于
存档
的操作
如果想写出就必须实现一个接口
Serializable
writeObject():
ObjecInputStream:
对象输入流.....
反
序列化流
:::
将对象写在文件上,类似于
读档
的操作
readObject():
数据操作流: //可以根据基本数据类型的大小(指的是其占得字节数)*来读数据
DateOutputStream
:数据输出流
writeXxx();
DateInputStream:
数据输入流
readXxx();
打印流:
PrintStream:打印字节流(字节打印流)
PrintWriter:打印字符流(字符打印流)
特点:
1.可以很方便的将对象的toString()结果打印到控制台上,而且可以启用自动刷新(自动刷出)的功能(自动刷出只是针对println() 方法),
2.前提是,调用的是 println()方法.
3. 该流只操作 目的地文件.
标准输入输出流:
System.in: 标准的输入流,默认指向键盘,可以接受用户键盘录入的内容.
System.out: 标准的输出流,默认指向控制台,可以将数据打印到控制台上.
system.out:标准输入流,默认指向键盘,可以接受用户键盘录入内容
PrintStream ps = system.out:
//printstream ps = system.out; ps.println();
PrintStream:
打印的是字节流,
println()
write()
PrintlnWriter:
打印的是字符流
system.in:标准输出流,默认指向控制台,可以将数据打印到控制台上
InputStream is = system.in;//获取标准的键盘录入,默认指向键盘
输入流只有一个,可以不用关闭
成员方法:
System.setIn():修改输入流
System.setOut():修改输出流
System 类:
public static final
InputStream
in :返回值类型是
InputStream
public static final
PrintStrem
out :返回值类型是
PrintStrem
从键盘输入的两种方式:
方式一:
BbufferedReader br = new Bbuf1.feredReader(new InputStreanReader(systm.in));
方式二:
scanner sc = new scanner(system.in);
Properties:
双列集合:是Hashtable的子类,也是唯一一个可以和IO流
直接结合
使用的集合类
特点:
1.表示一个持久的属性集,
2.可以从流中加载数据也可以写数据到流中,
3.键值都是String
成员方法:
put():(setProperty())
get();(getProperty();)
keySet():(propertyNames() 返回值是枚举)
Enumeration: //相当于是 Iterator
hasMoreElements(); //相当于是 Iterator#hasNext()
nextElement(); //相当于是 Iterator#next()
重点掌握的方法:
load(): //从文件读取数据到集合中
properties prop = newproperties();
prop .load(new fileInputStream(文件名));//将文件读取到集合中
store()://可以写入数据到流中
第二个参数是对参数列表的描述
面试题:
记忆:
1.要想实现序列化和反序列化,必须实现
Serializable接口