永发信息网

下面的accept()方法是如何被调用到的?

答案:2  悬赏:10  手机版
解决时间 2021-02-02 08:47
  • 提问者网友:那叫心脏的地方装的都是你
  • 2021-02-01 15:15
package com.xc.test;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

public class IOTest {
public static void main(String[] args){
File path = new File("./src/com/xc/action");
String[] list;
if(args.length == 0){
list = path.list();
}else{
list = path.list(new DirFilter(args[0]));
}
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
}

}

class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
public boolean accept(File dir , String name){
return pattern.matcher(name).matches();
}
}
最佳答案
  • 五星知识达人网友:duile
  • 2021-02-01 16:40
看java源代码,File.java

public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return (String[])(v.toArray(new String[v.size()]));
}
全部回答
  • 1楼网友:动情书生
  • 2021-02-01 17:24
filter功能一般用于:1.字符编码转换2.session管理filter好比一个门卫过滤进来的人。而且在实现filter接口的类的dofilter方法中,一定要执行chain.dofilter(request,response)才能继续执行。例如在web.xml设置filter-mapping中的url-pattern为/admin/*,则表明访问该工程下的admin目录下的代码才会执行设置好的filter实现类,执行别的页面则不执行。根据filter功能1字符编码转换功能:比如:建立一个带default表单的html页面(charset=utf-8),建立个loginservlet的servlet页面,从login.html传递到loginservlet的username参数名"张三",由于html页面charset=utf-8,request读不到汉字,结果为乱码。修改方法:html修改charset=gbk,request.setcharacterencoding("gbk"),response.setcharacterencoding("gbk")。或者更为简便的方法是使用filter,代码如下publicvoiddofilter(servletrequestrequest,servletresponseresponse,filterchainchain)throwsioexception,servletexception{//todoauto-generatedmethodstubrequest.setcharacterencoding("gbk");response.setcharacterencoding("gbk");chain.dofilter(request,response);}在web.xml中添加efencodingfilteref/*而页面的字符集编码都不用管了。filter第二个功能是session管理:比如:工程下webroot包含一个pages文件夹里含有业务页面,webroot根目录下还有一个login.jsp,则需要设置filter过滤pages文件夹中的页面,可以设置sessionfilter类来判别每个页面是否在session中是否存有用户名,如果没有则跳转到login.jsp并提示下您没有输入用户名。如果有则继续执行。另外要注意的是,在dofilter类中的参数是servletrequest和servletresponse。一般我们要用到的session是从httpservletrequest获取到的,所以必须要把dofilter的servletrequest转型
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯