1、谈谈你对JavaIO的理解
JavaIO从整体分为File类、IO流结构、Properties类。
File类是基础,包含了对文件系统的常用方法【静态方法】;
IO流结构可以划分为字节流和字符流,两者的区别是字节流处理的是由若干个字节组成的内容(如图片、视频、pdf、excel等),而字符流处理的是由纯字符组成的纯文本文件,常见于*.txt文件,InputStreamReader和OutputStreamReader可以将字节流转换为字符流。
字符输入流:
FileReader---文件输入流、BufferedReader---缓冲区输入流、InputStreamReader-
--字节输入流
字符输出流:
FileWriter---文件输出流、BufferedWriter---缓冲区输出流、OutputStreamWriter--
-字节输出流
字节输入流:
FileInputStream---文件输入流、BufferedInputStream---缓冲区输入流、
ObjectInputStream---对象输入流【反序列化】
字节输出流:
FileOutputStream---文件输出流、BufferedOutputStream---缓冲区输出流、
ObjectOutputStream---对象输出流【序列化】
Properties类是以键值对形式存储数据,他有两个主要方法store【存储数据】和load【读取数据】
2、为什么InputStream.read()读取一个byte却返回一个int?
因为read()方法采用native关键字修饰,说明他是一个本地方法,底层采用C/C++来实现这个功能,C++的byte类型的范围是无符号数0-255,而Java的byte类型的范围是-128-127,这不能完全接收C++返回的数据,因此采用int接收。