黑马程序员技术交流社区

标题: 关于IO流的学习方法 [打印本页]

作者: 李征    时间: 2013-6-1 00:17
标题: 关于IO流的学习方法
本帖最后由 李征 于 2013-6-1 09:27 编辑

    最近在学习IO流,发现IO流的体系是如此的庞大,首次接触的我在看完视频以后居然感觉有种有有余力不足的感觉,求论坛里的高手们分享一下IO流的学习方法,主要是思路,一般遇到问题是如何思考的,先怎么样再怎么样之类的,十分感谢
作者: slatop@qq.com    时间: 2013-6-1 00:36
确实如此 java的IO流有点复杂,我这有C++基础的都是直接走马而过的。准备第二遍时再好好研究。第一遍先大概看一下原理吧。等把java的基本语法和主要编程思想,功能等了解一下,再回头来解决复杂的问题,比如泛型,反射等。学习的时候拿个小本本自己画一个自己理解起来容易的图,完了把该记的都记下来,再然后上机写几个小例子上下手,再再然后就是拿着你的小本本24小时不离身,没事就回忆一下,想不起来立即查看
作者: 蚂蚁搬家    时间: 2013-6-1 03:00
初学一个新的知识,总是感觉乱七八糟的,没有任何头绪,一个短短的视频看起来就很费劲儿,不想看,但是坚持看完,把代码敲了,笔记写了,第二天再看就感觉很清晰很简单了。
IO流中的类特别多,乍一看,很乱,但是是有规律的。
首先是四大基本抽象流:字节流:InputStream、OutputStream,字符流:Reader、Writer;输入流:InputStream、Reader,输出流:OutputStream、Writer;后面的所有流都是这四个的实现类;
文件流:FileInputStream、FileOutputStream,FileReader、FileWriter,文件流算是四大基本抽象流的最初级实现类,前面两个是字节流,可以用于任何格式文件的读写(因为文件的最基本存储形式就是字节数据),后面两个是字符流,只能用来处理文本文件;
缓冲流:字节流:BufferedInputStream、BufferedOutputStream,字符流:BufferedReader、BufferedWriter,这四个流用的是装饰设计模式,在使用时要接收其它的流对象,比如文件流;同文件流一样,前面两个流可用于任何类型的文件读写,后面两个流主要用于文本文件的读写,由于这四个流在建立对象后内部会自建缓冲区,所以读写的效率比较高,尤其是BufferedReader中的readLine()方法读取文本文件特别合适,可以整行整行的读取,遇到换行符算是一行的结束,但是它不会返回换行符,所以需要在调用write()方法后用newLine()方法新建换行符;
数据流:DataInputStream、DataOutputStream:用于基本类型数据的读写,采用装饰设计模式,构造方法的形参是流对象;

太晚了,顶不住了,未完待续…………
{:soso_e108:}
作者: 廖志强    时间: 2013-6-1 06:05
步骤:
A:明确数据源和目的地
        数据源:读取数据
                        Reader
                        InputStream
        目的地:写入数据
                        Writer
                        OutputStream

B:明确数据源和目的地是否是字符数据
        数据源:
                        是:
                                Reader
                        否:
                                InputStream
        目的地:
                        是:
                                Writer
                        否:
                                OutputStream
                               
C:明确设备
        数据源:
                        硬盘文件:
                                FileXxx
                        键盘录入:
                                System.in -- InputStream -- 转换流 -- InputStreamReader
                       
        目的地:
                        硬盘文件:
                                FileXxx
                        控制台输出:
                                System.out -- OutputStream -- 转换流 -- OutputStreamWriter
                       
D:是否高效
        是:就使用带Buffer的流对象
        否:不使用带Buffer的流对象
只要你把这个思路弄清楚了,数据源和目的源,问题就好做了,IO不是很难,难得是有很多方法,思路要清晰
作者: 李征    时间: 2013-6-1 09:26
感谢楼上的亲们,都是牛人呐
作者: 俞帅明    时间: 2014-1-20 23:25
多练习练习,多写代码就好了。
作者: 伪猫君    时间: 2014-10-4 16:57
遇到瓶颈来取取经




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2