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