java中for循环遇到的问题

_小石头_ 2019-03-04 11:17:30
最近写了一个读取文件夹中文件的代码:
    
private String filepath = "D://TEST/data"; //监听的文件夹目录

public void readfile() {
// System.out.println("###读取到文件 【filepath:"+filepath+"】");
// System.out.println("lastEndTime:"+lastEndTime);
File file = new File(filepath);
if(!file.exists()){
file.mkdir();
}
if (!file.isDirectory()) {
// System.out.println("这是一个文件 :" +file.getPath());
if(CommonUtil.JudgeLOG(file.getName()))
if(file.lastModified()>lastEndTime&&file.lastModified()<timeEnd)
if(!readFileQueue.push(file))
System.err.println("放入SendMQQueue失败:"+file.getPath());
} else if (file.isDirectory()) {
// System.out.println("这是一个文件夹 :" +file.getPath());
String[] filelist = file.list();
// System.out.println("文件夹中的数量 :" +filelist.length);
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "/" + filelist[i]);
// System.out.println("读取到文件 :" +readfile.getPath());
if (!readfile.isDirectory()) {
// System.out.println("这是一个文件 :" +file.getPath());
if(readfile.lastModified()>lastEndTime&&readfile.lastModified()<timeEnd){
System.out.println("*****读取遗漏文件:"+readfile.getPath());
if(CommonUtil.JudgeLOG(readfile.getName()))
if(!readFileQueue.push(readfile))
System.err.println("放入SendMQQueue失败:"+file.getPath());

System.out.println("************: " +readFileQueue.size());
}

} else if (readfile.isDirectory()) {
this.filepath = filepath + "/" + filelist[i];
// System.out.println("this.filepath :" +this.filepath);
this.readfile();
}
}
}
}


在第一个for循环中 就是该目录下有两个文件夹,在读取第一个的时候进入else 然后调用this.readfile()方法。再然后第一次for循环的第二个文件夹就没有去读取了。。。。。怎么回事啊
...全文
290 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
_小石头_ 2019-03-04
  • 打赏
  • 举报
回复
它这个最终只会进入监听文件夹下的第一个文件夹读取里面的文件 比如:D:\TEST\data\2019\01\XXX.log 其实data文件夹下还有2018、2017等等文件都没循环 。 打断点循环的地方也有两次循环,但是进入readfile()方法后第二遍循环就不会去循环了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧