黑马程序员_java基础——io


黑马程序员

------- android培训java培训、期待与您交流! ----------

1:IO
(1)IO流技术是输入输出数据用的。
  常见的应用:上传文件,和下载文件。
(2)IO流的分类:
A:流向
输入流 读取数据
字节输入流,字符输入流
输出流 写出数据
字节输出流,字符输出流
如果某种文件的类型的数据通过记事本打开是可以读懂的,就用字符流。
否则用字节流。
(3)FileReader读取数据
步骤:
A:创建字符输入流对象。
B:读取数据并显示在控制台。
C:释放资源。
(4)FileWriter写出数据
步骤:
A:创建字符输出流对象。
B:调用功能写数据。
C:释放资源。
几个小问题:
A:字符输出流为什要flush()?
为了将数据写入
B:为什么要close()?
释放资源
C:flush()和close()的区别?
flush():刷新
close():先刷新在释放
D:如何实现数据的换行?
\r\n
E:如何实现追加写入数据?
FileWriter fw = new FlieWriter("e:\\t\\t.txt",true);
fw.write("hello");
(5)字符缓冲区流
BufferedWriter:
BufferedWriter(Writer w)
BufferedReader:
BufferedReader(Reader r)
字符缓冲区流对象,仅仅是提供了缓冲区,进而提供了高效。
真正的读写操作,还是得你传递一个基本的流对象。
(6)字符缓冲流的特性功能
特性功能
BufferedReader:
String readLine():一次读取一行数据,不包含换行符。
BufferedWriter:
void newLine():根据操作系统的换行写一个换行符。
2:字节流
(1)原理和字符流类似
3:打印流
(1)往目的地写数据的流对象。没有对应的打印读取。
(2)特点:
A:可以往文件中写出任意类型的数据。
B:如果启用了自动刷新,在使用println()方法的时候会自动刷新,并且换行。
C:可以直接操作文件。
问题:哪些流对象可以直接操作文件?
看API,如果某个流的类能够同时接收File和String的构造参数,
那么,该流对象就可以直接操作文件。
2:转换流
(1)标准输入输出流
A:System.in 标准输入流
B:System.out 标准输出流
System.out.println();
(2)转换流:
键盘录入数据:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
把字符输出显示在控制台:
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
(3)字符编码问题:
编码表:由字符及其对应的数组组成的一张表。
常见的编码表:
ASCII
ISO-8859-1
gb2312
gbk
gb18030
utf-8
(4)在转换流中的编码问题:
A:字符流 = 字节流 + 编码表。
B:如果要想在IO流中指定编码进行读写数据,用转换流。
C:编码问题
简单:只需要保证编码一致即可。
复杂:因为不是我们一个人做开发。
3:序列化流
(1)序列化:把对象写到文件,或者在网络中传输。
  反序列化:把文件中的数据或者网络中的数据还原成对象。
(2)怎么实现序列化或者反序列化?
必须让被序列化或者反序列化的对象所属的类实现序列化接口。
(3)怎么解决类实现序列化后的黄色警告问题?

点击鼠标,生成一个固定的序列化id值即可。


黑马程序员

------- android培训java培训、期待与您交流! ----------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值