A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xman20 中级黑马   /  2015-3-22 10:03  /  775 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



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。针对数据类型不同来进行输入输出流。



         读写流在学习的时候我感觉有两个比较重要的关注点,一个就是,不同的读写流在创建的时候,有的是会覆盖同名文件,有的是不覆盖在文件后继续写,有的时候加入标志位确认是否覆盖,这一点非常需要注意。第二个就是乱码问题,不同类型的数据,包括即使是字符串,编码方式的不同,都会造成输出的文件的数据会出现混乱,要特别注意。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马