IO输入输出应该是非常重要的一个部分了,不论是人机交互,还是程序中的存储读取,都需要用到IO输入输出流。
IO流分为字符流和字节流,在此基础之上,进行了很多流的包装,可以进行跟快,更方便的操作。
比如在FileInput的基础上进行Buffer缓冲包装,如果单纯的一个字节一个字节的读取,速度非常慢,而且要不停的反复读写磁盘,造成磁盘的磨损。
缓冲的顶层其实也是在一个字节一个字节的读取,但是一次能读取用户定义的字节数组,减少了反复读写的次数。
自己也尝试了写一个数组缓冲,来进行读写操作:
class FileReader
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("demo.txt");
//定义一个字符数组。用于存储读到字符。
//该read(char[])返回的是读到字符个数。
char[] buf = new char[1024];
int num = 0;
while((num=fr.read(buf))!=-1)
{
System.out.println(new String(buf,0,num));
}
fr.close();
}
}
JAVA也提供了很多不同类型的输入输出流,比如ObjectStream, FileWriteStream。针对数据类型不同来进行输入输出流。
读写流在学习的时候我感觉有两个比较重要的关注点,一个就是,不同的读写流在创建的时候,有的是会覆盖同名文件,有的是不覆盖在文件后继续写,有的时候加入标志位确认是否覆盖,这一点非常需要注意。第二个就是乱码问题,不同类型的数据,包括即使是字符串,编码方式的不同,都会造成输出的文件的数据会出现混乱,要特别注意。
|
|