java I/O流学习笔记

这是在上海java培训机构学习javaI/O流的笔记,分享给大家。

<!--[if !supportLists]-->1、<!--[endif]-->流:相当于管道,联通程序和数据源。输入还是输出都是相对于程序来说,程序中的数据存储在内存中。(流就是IO包中的一些类)

<!--[if !supportLists]-->2、<!--[endif]-->流的分类:根据每次读取的单位分为字节流和字符流,

(汉字如果用字节流,那么每读一个字节就转成一个字符,但是汉字两个字节才表示一个汉字,所以会出现乱码)

根据功能不同分为节点流和处理流,

节点流就是直接按照字节流和字符流进行数据读取,

处理流是在节点流的基础上加上一些功能比如缓冲流。

处理流必须嵌套在节点流之上。

<!--[if !supportLists]-->3、<!--[endif]-->流的组织关系:inputstream   。。。和reader都是流的抽象类,其他相对于的类继承这些抽象类。

<!--[if !supportLists]-->4、<!--[endif]-->对于文件操作的流都是File开头

<!--[if !supportLists]-->5、<!--[endif]-->各种缓冲流都是buffered开头

<!--[if !supportLists]-->6、<!--[endif]-->字节流和字符流转换InputStreamReader

<!--[if !supportLists]-->7、<!--[endif]-->流的关闭,必须是先开的后关。流必须关闭。

PrintWriter out = new PrintWriter(bw,true);

//加上true之后,输出的数据立即写入文件

//如果没有加true,必须使用out.flush()或out.close()才能写入文件

<!--[if !supportLists]-->8、<!--[endif]-->需要注意换行,因为如果不换行就是一个字节一个字节的写入就不会像源文件一样的格式。

<!--[if !supportLists]-->9、<!--[endif]-->PrintWriter 标准的输出流,可以直接写入八种数据类型和字符串,在实例化时可以指定自动刷新。

<!--[if !supportLists]-->10、<!--[endif]-->PrintWriterout =newPrintWriter(bw,true);

自动刷新,如果没有自动刷新必须关闭流或者手动out.flush()刷新才可将数据输出到文件

 

各种输入流和各种输出流有自己的读写方法,返回和写入的方式都不同,比如返回一个字符按照返回int或者返回字符数组,写入的比如直接写入数字、字符串等等。

读取出来按照不同方式显示返回值,写入也可以按照各自类型写入。

如果要和原来一样就一行一行的读,然后一行一样的写入,注意换行是否是自动的。

应用:标准输入流是字节流,但是用户输入的都是字符,字符进行编码变成字节流之后,我们再将去转化成字符流

对象序列化:

1、在保存游戏进度时候,需要将各种消息永久保存到文件中而不只是在内存中,恢复时候再重文件中读取数据。

2、对象序列化,就是可将对象按照流的方法写入到文件,然后再按照对象的方式读取出来(其实就是对字节流加了处理),这样就很方便我们读取对象保存的信息,但是不会保存对象的静态属性(transient)的信息。

3、如果一个对象想要被按照对象的方式进行读取,那么他的类必须实现Serializable接口

   privatestaticfinallong serialVersionUID = 3648496837393822221L;

这个id是根据这个类的属性来产生的,如果这个类做了修改这个id就是改变,那么这个类就相当于升级了,用于判断这个类的对象是否是升级的对象。

<!--[if !supportLists]-->3、<!--[endif]-->对象序列化话的时候,写入的顺序和读取的顺序必须完全相同。

 

所谓的输入和输出都是相对于内存而言的

读(input)(read)=输入

写(output) (write)=输出

转换流:

inputStreamReader和outputStreamWriter用于字节数据到字符数据之间的转换

inputStreamReader需要和inputStream“套接”

outputStreamWriter需要和outputStream“套接”

更多精彩请浏览上海it培训官网。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值