这几天学IO,发现学的乱七八糟的,主要看的是李兴华的教学视频,教得不错,但是也有很多问题,特别是教了很多种类,却不知哪种才是常用的
创建文件和查看文件夹到没啥
RandomAccessFile这个有必要看么?只能传输12位而且往txt里写数字的时候总会乱码.
OutputStream和InputStream按照Byte传输,好像很多读入和输出都是这么来的,如此麻烦的操作会在什么时候用呢?我看FileWriter和PrintWriter都可以直接将String输出到txt,却没看到能直接读入将txt内容一起读入的方法.
InputStreamReader(System.in)应该是用来从控制台输入的,那么这和Scanner有啥区别?
学的不多,有些概念模糊,表达不清楚请见谅.

解决方案 »

  1.   

    学习流,首先要有层次感
    比如InputStream,OutputStream,Reader,Writer。四个抽象类是整个流的基础。
    其余的类分别依次继承他们。
    搞清继承关系,搞清各个流的用途,将他们系统的总结下。你会有很大进步的。
      

  2.   

    把类分清楚最重要,
    字节流
    字符流
    装饰流
    ————————————————————
    1、RamdomAccessFile本质上是字节流,txt文件是字符,两者是不同的。IO流重要的一点就是怎么写入就怎么拿出来。你以字节的形式写入,应该以字节的形式读出,才能还原数据。
    2、OutputSteam和InputStream比Writer和Reader有用的地方太多了,比如网络通信、对象序列化等。
    3、Writer类把字符串写出,实际上就是把内存的一部分写出,相当于把缓冲写出,Reader也有把流的一部分读入内存的read()方法。
    4、InputStreamReader(System.in)这个把in这个字节流装饰为字符流,可以从控制台读入一些字符。Scanner(System.in)是用正则把控制台的输入释义为int ,double等基本类型的数据,当然也可以读入字符串。比较而言,Scanner类更方便,更实用。
      

  3.   

    自己做个sample程序,其中把各种流的类都使用一遍不就知道了。测试用的文件,可能用图片等文件,这样可以通过input流读入,再用output流读出,这样源文件和输出文件对比一下,不就行了。
      

  4.   

    InputStream,OutputStream,Reader,Writer 这四个不用说了
    然后在前面加上FILE,就可以读取文件了,自己写个例子,(网络上找,到处是),先解决读取文件的IO流,多做几个例子.然后用SERVLET,上传一个就会更清晰了.