今天非常充实的一天学会了很多东西,慢慢调整过来了,不过流这里还差很多,继续努力补补,今天还讲了对象序列化,流比较好理解也就是缓冲流和转换流,今天的作业也挺有意思的,不过做的不够完善,一个学生管理系统,下边通过转换流说说我的认识,读取Reader和Writer, FileReader:专门用于处理文件的字符读取流对象, FileWriter:专门用于处理文件的字符写入流对象。
特点:
1,是字节流和字符流之间的桥梁。
2,该流对象中可以对读取到的字节数据进行指定编码表的编码转换。
什么时候使用呢?
1,当字节和字符之间有转换动作时。
2,流操作的数据需要进行编码表的指定时。
具体的对象体现:
1,InputStreamReader:字节到字符的桥梁。
2,OutputStreamWriter:字符到字节的桥梁。
这两个流对象是字符流体系中的成员。
那么它们有转换作用,而本身又是字符流。所以在构造的时候,需要传入字节流对象进来。
二、感觉还是对象序列化不错 老师说很有用也一定学好,今天通过看书查资料以及课堂上的听讲我了解了不少,首先必须知道两个关键词Serializable和Externalizable
使用ObjectInputStream/ObjectOutputStream来读取或写入对象,要写入或读取的对象必须要设置在classpath中
通过java.io.ObjectOutputStream可以将对象输出到磁盘文件、网络等设备,调用这个类的writeObject()方法,可以向特定的文件或网络输出对象writeObject()方法序列化指定的对象,并遍历该对象对其它对象的引用,递归的序列化所有被引用到的其它对象,从而建立一个完整的序列化流,通过java.io.ObjectInputStream对象可以从磁盘文件中读出保存的对象(或从网络中读出传递的对象)
调用这个类的readObject()方法,从特定的设备读出对象
readObject()方法反序列化输入流中的对象,遍历该对象中所有对其它对象的引用,并递归的反序列化这些引用对象
readObject()方法返回的是Object对象,所以,需要对它进行必要的(向下)造型操作。对象序列化到磁盘或者网络,有可能造成信息泄密.为了避免泄密,可以使用两种方法:
1. 不将重要的数据序列化
2. 对对象的属性进行序列化的时候,对这些数据进行处理,比如加密,这个时候就需要自己定义一种方式对对象进行序列化,而不是使用默认的方式进行序列化
通过在可系列化的类中实现方法,可以实现定制方式
private void writeObject(ObjectOutputStream out) throws IOExceptionprivate
private void readObject(ObjectInputStream in) throws IOException,ClassNotFoundException
对于敏感的数据,不应该直接将它序列化输出.通过在属性前面加上transient关键字,限制属性写入到文件或网络中,
今天其实还学到了很多东西,挺充实;