lifeneedyou 2009-04-14 16:04
浏览 225
已采纳

关于java的IO包的困惑,应该怎么学习才好

   想来想去,还是出来问问大家吧!
  小弟我搞java有两年多了,平时对于面向对象,框架之类的自己觉得理解的还算可以,但java里的IO包,我平时用的比较少,做过几个项目,项目里面用的也不多,每次看到IO包的一些类,感觉对IO包没有感觉,有时候很陌生,有时候问自己到底会不会文件操作,我觉得我只知道它有个输入流,输出流,读和写,别的我也不知道!用的时候我要查 API,不然我就不知道从哪里下手,反正就是对这个包没有感觉。。。
 我觉得我的问题应该是对IO包没有真正的理解,所以才会出现现在这种问题。请问大家:
 1你们觉得怎样才算理解和掌握了java的文件操作部分?
 2你们是怎么学习这个包的?怎么熟练起来的?
 3这个IO包采用的是什么样的设计模式?
这些都是我现在的疑问。。
问题补充

maoxiaolu2000 写道
我觉得吧, 第一步,把流想像成水。第二步,把所有的数据都分解到byte
然后让这些数据在你的控制下流来流去。

其实我也是初学乍道。

呵呵!这位兄弟颇有见解!比喻很形象啊!看来你对这个理解的不错了!多谢!
  • 写回答

2条回答 默认 最新

  • rednaxelafx 2009-04-14 16:33
    关注

    java.io里最经典的模式算是decorator模式。该包主要有两组几乎平行的类层次,一组是InputStream/OutputStream,用于处理二进制数据的输入输出;另一组是Reader/Writer,用于处理文本数据的输入输出。InputStream/OutputStream可以通过InputStreamReader/OutputStreamWriter的包装来转换为Reader/Writer。

    从decorator的角度看,位于底层的有FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream、CharArrayReader、CharArrayWriter、StringReader、StringWriter等等。其它的InputStream/OutputStream、Reader/Writer的实现类则可用于包装底层的流和reader/writer,以提供更多的功能。例如BufferedReader能包装一个Reader以提供缓存功能,之类的。

    向文件写出文本时常用的做法是:
    [code="java"]PrintWriter writer = new PrintWriter(
    new BufferedWriter(
    new OutputStreamWriter(
    new FileOutputStream(filepath))));[/code]
    可以看到decorator模式的应用以及包装的关系。

    PipedInputStream和PipedOutputStream是一组比较特别的输入输出流。它们本身都需要用别的Stream作为底层流,同时这两者也可以相互连接起来组成管道,使得InputStream与OutputStream能够相互转换。PipedReader/PipedWriter同理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决