问题描述
关于该接口中的第一个参数File对象,我实在想不出他在方法里有什么用处。。。我看了一下File类里面的带参的list方法,他里面也只是把this对象传给了accept方法,也就是把调用带参list方法的那个文件对象传递进去,但是accept的方法的实现过程里丝毫用不到File对象的东西,就可以达到按指定后缀或者字符串过滤的功能不是?。。。各位有何高见啊。。。本人是新手,莫喷我啊
解决方案
解决方案二:
acceptbooleanaccept(Filedir,Stringname)测试指定文件是否应该包含在某一文件列表中。参数:dir-被找到的文件所在的目录。name-文件的名称。返回:当且仅当该名称应该包含在文件列表中时返回true;否则返回false。例如如果当前为一目录,应该返回trueif(dir.isDirectory()){returntrue;}否则你连目录都看不到
解决方案三:
返回:当且仅当该名称应该包含在文件列表中时返回true;否则返回false。
解决方案四:
publicString[]list(FilenameFilterfilter){Stringnames[]=list();if((names==null)||(filter==null)){returnnames;}ArrayListv=newArrayList();for(inti=0;i<names.length;i++){if(filter.accept(this,names[i])){v.add(names[i]);}}return(String[])(v.toArray(newString[0]));}这段是从jdk的File类里考出来的,一个文件对象在调用他自己的list(带参)方法是,实际上是先调用他的list()方法得到当前目录下的文件的String数组。。。然后再调用accept方法。。那么也就是说调用accept方法是已经进入到目录了呀。。。btw:谢谢你。。。引用1楼windforcecn的回复:
acceptbooleanaccept(Filedir, Stringname)测试指定文件是否应该包含在某一文件列表中。参数:dir-被找到的文件所在的目录。name-文件的名称。返回:当且仅当该名称应该包含在文件列表中时返回true;否则返回false。例如如果当前为一目录,应该返回trueif(dir.isDirectory()){returntrue;}否则你连目录都看不到
解决方案五:
对,但是文件列表在调用accept时已经得到了。。。我的理解是,list(带参)方法只能被文件(夹)对象调用,也就是fileobject.list(newFilenameFilter()),文件列表就是fileobject的列表啊,我已经得到了,不明白为什么还需要再在接口中显式的用一个参数来表示呢。。。引用2楼swandragon的回复:
返回:当且仅当该名称应该包含在文件列表中时返回true;否则返回false。