现在的位置: 首页 > 综合 > 正文

2011 09 01 学习总结

2018年05月11日 ⁄ 综合 ⁄ 共 1266字 ⁄ 字号 评论关闭

2011 09 01 学习总结

申延刚 Younger.shen

Younger.x.shen@gmail.com

1File类的使用

2文件夹嵌套访问及删除操作

3FilenameFIlter与FIleFIlter的使用

4RandomAccessFIle类的使用

总结:

1关于File类的使用,Thinking in java中说的很好,File这个名字确实是很有迷惑性的,光看File这个名字和它的构造器的话很容易被误导,很容易就以为它指的是文件,而不包含目录,事实却并非如此,实际上它既可以表示一个文件,一个文件夹或者文件集合,如果它指的是文件集,我们就可以调用它的list()方法,这个方法返回的是一个字符数组,至于为什么它返回的是数组而不是其他的更加高级更灵活的容器类这个问题,大家应该都是比较清楚的,很明显这些目录不是时刻在变动的,采用数组,效率上果断更胜一筹。

做程序设计,很多情况下都存在设计不到位的情况,而且我认为(Bruce Eckel也这么认为)FilePath是个更好的名字。

该类中有2个互相重载的list()方法,和4个互相重载的listFiles()方法,其中都有带参数的,一个是FilenameFilter参数,明显返回的是String数组,listFiles方法重载过的是 FileFIlter参数,返回的是File数组,其实过滤器这种东西吧很像另一个东西就是Struts中的过滤器,这种渔网的设计模式其实很有用,具体大家自己体验就好了。

具体的写法已经很明确了,只是当初我自己最不清楚的一点就是 FilenameFilter()是如何在list里面过滤那些读取到的文件的,并没有显示生成对象,更没有显示调用什么方法,就接口中的方法 accept()来说,真的是搞不清楚它是在哪里被调用的,我真的是好费解啊,我不懂啊。Ioc注入是怎么回事也搞不懂啊!!

迷惘了很长时间之后终于董,其实这和为什么写个 Frame f = new Frame(),就会出来一个窗口一样,具体的,还是去看一看java源码好了,不过现在没时间了,明天再看好了,嘎嘎!

2.

关于目录的递归访问操作,其实thinking in java中也有相似的一个问题,都是要求递归读取到目录然后进行其他操作,然后递归删除文件,最后把输入的根目录也删了。

其实递归并不是特别复杂的算法。对于java web之类的和算法确实也离得比较远,但是这并不代表字符串之类的基本操作就很简单,就正则表达式来说就是难过的一关,要不然也不会有那么多的正则白痴了,

其实我也很费解,正在积极研究中,具体的递归算法,还是要注意结束的条件,思想就是进入一个目录以后list的返回个数判断,这个很严谨,不然会麻烦。

 

关于RandomAccessFile

这个类和io包中的其他类没有任何关系,但是也是io装饰中的有力保障,是DataInputStream和DataOutputStream的结合体,当然也多了自己的方法,而且也有类似于 c的fopen类似的wr r操作符,可以方便读写操作。

就这么多,无论从哪方面看,我都是个菜鸟!

抱歉!评论已关闭.