当前位置:首页 > Java技术文章 > java使用FileVisitor遍历文件和目录

java使用FileVisitor遍历文件和目录实例写法

  • 发布时间:
  • 作者:码农之家原创
  • 点击:206

这篇文章主要知识点是关于FileVisitor遍历文件、FileVisitor遍历目录、java遍历文件、java中File类应用遍历文件夹下所有文件 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下java相关资源

菜鸟成长之路:Java程序员职场全攻略

《菜鸟成长之路:Java程序员职场全攻略》 内容简介:以包罗万象的IT这个大江湖为背景,将Java职场中从入门前的学校菜鸟到成长为技术大牛的过程展现给读者,内容饱满但又不失趣味性。在《

查看详情

java使用FileVisitor遍历文件和目录

在早期的Java版本中,如果需要对指定目录下的文件进行遍历,则需要用递归的方法来实现,这种方法有点复杂,而且灵活性也不高。而使用Java7中Files工具类中的walkFileTree()方法可以很容易的实现对目录下的所有文件进行遍历。这个方法需要一个Path和一个FileVisitor参数。其中Path是要遍历的路径,而FileVisitor则可以看成的一个文件访问器,它主要提供的四个方法,这在程序中可以看到。而FileVisitor四个方法返回的都是FileVisitResult对象,它是一个枚举类,代表的是返回之后的一些后续的操作。

FileVisitResult主要包含四个常见的操作。

1、FileVisitResult.CONTINUE 继续遍历
2、FileVisitResult.TERMINATE 中止访问
3、FileVisitResult.SKIP_SIBLINGS 不访问同级的文件或目录
4、FileVisitResult.SKIP_SUBTREE 不访问子目录

通过创建SimpleFileVisitor对象来对文件进行遍历即可,它是FileVisitor的实现类,这样可以有选择的重写指定的方法

下面的程序是使用FileVisitor对目录进行遍历,该程序还简单实现了在指定的目录下查找文件。

package com.sdjz.test1;

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.List;

public class FileVisitorTest {

  public static void main(String[] args) throws IOException {
    // 使用FileVisitor对目录进行遍历
    Files.walkFileTree(Paths.get("d:", "workspace"), new SimpleFileVisitor<Path>() {

      // 在访问子目录前触发该方法
      @Override
      public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
        System.out.println("正在访问" + dir + "目录");
        return FileVisitResult.CONTINUE;
      }

      // 在访问文件时触发该方法
      @Override
      public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        System.out.println("正在访问" + file + "文件");
        if (file.endsWith("FilesTest.java")) {
          System.out.println("------已找到FilesTest.java,文件内容-----");
          List<String> list = Files.readAllLines(file);
          // 打印出文件的内容
          System.out.println(list);
          return FileVisitResult.TERMINATE;
        }
        return FileVisitResult.CONTINUE;
      }

      // 在访问失败时触发该方法
      @Override
      public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
        // 写一些具体的业务逻辑
        return super.visitFileFailed(file, exc);
      }

      // 在访问目录之后触发该方法
      @Override
      public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
        // 写一些具体的业务逻辑
        return super.postVisitDirectory(dir, exc);
      }
    });
  }
}

下面的程序运行的效果

java使用FileVisitor遍历文件和目录

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

java中File类应用遍历文件夹下所有文件

本文要求遍历指定文件夹下的所有文件,包括子文件夹下的文件,供大家参考,具体内容如下

代码:

package 遍历文件夹所有文件;

import java.io.File;

public class Test {
  public static void main(String[] args){
    File file=new File("D:\\tcb\\周总结");
    filesDirs(file);
  }
  //使用递归遍历文件夹及子文件夹中文件
  public static void filesDirs(File file){
    //File对象是文件或文件夹的路径,第一层判断路径是否为空
    if(file!=null){
      //第二层路径不为空,判断是文件夹还是文件
      if(file.isDirectory()){
        //进入这里说明为文件夹,此时需要获得当前文件夹下所有文件,包括目录
        File[] files=file.listFiles();//注意:这里只能用listFiles(),不能使用list()
        https://files下的所有内容,可能是文件夹,也可能是文件,那么需要一个个去判断是文件还是文件夹,这个判断过程就是这里封装的方法
        //因此可以调用自己来判断,实现递归
        for (File flies2:files) {
          filesDirs(flies2);
        }
      }else{
        System.out.println("文件名字"+file);
      }
    }else{
      System.out.println("文件不存在");
    }


  }
}

结果:

java中File类应用遍历文件夹下所有文件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于Java的全部知识点内容总结,大家还可以在下方相关文章里找到Java文件和base64流相互转换、 java图形界面编程的代码详、 Java实现快速排序原理分析、 等java文章进一步学习,感谢大家的阅读和支持。

上一篇:java语言中反射的实例用法总结

下一篇:没有了

展开 +

收起 -

java遍历文件 相关内容
Java中List集合的遍历的知识点总结

这篇文章主要介绍了Java中List集合遍历实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

查看详情
Java多线程编程实战指南:核心篇

Java多线程编程实战指南以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进介绍Java平台下的多线程编程核心技术及相关工具

查看详情
Java语言程序设计:基础篇

Java语言程序设计是Java语言的经典教材,本书全面整合了Java 8的特性,采用“基础优先,问题驱动”的教学方式,循序渐进地介绍了程序设计基础、解决问题的方法、面向对象程序设计、图形用

查看详情
黑马程序员java面试宝典Beta6.0

黑马老师整理的比较全的面试宝典,你面试会提到的技术问题都在这里,有这一本就够了,感兴趣的可以了解一下

查看详情
Java EE企业级应用开发教程

这本书详细讲解了Java EE中Spring、Spring MVC和MyBatis三大框架,采用了大量案例,帮助读者学习和理解SSM的核心技术,是一本J2EE程序设计的轻量级开发教程

查看详情
Web前端开发精品课 JavaScript基础教程

《JavaScript基础教程》 共分为2大部分,第1部分是JavaScript基础知识,主要学习JavaScript基础概念如变量、运算符、表达式等。第二部分是JavaScript进阶知识,主要学习DOM、事件操作以及各种开发技

查看详情
RxJava响应式编程

主要介绍如何使用RxJava进行响应式编程,从响应式编程与RxJava的概念,到RxJava的操作符和源码,以及各种Scheduler的特点和适用场景,均做了较细致的讲解,是架构师提升必备入门书籍

查看详情
java遍历文件 学习笔记
网友NO.747692

JavaScript树的深度优先遍历和广度优先遍历算法示例

本文实例讲述了JavaScript树的深度优先遍历和广度优先遍历算法。分享给大家供大家参考,具体如下: 1、深度优先遍历的递归写法 function deepTraversal(node) { var nodes = []; if (node != null) { nodes.push(node); var children = node.children; for (var i = 0; i children.length; i++) deepTraversal(children[i]); } return nodes;} 2、深度优先遍历的非递归写法 function deepTraversal(node) { var nodes = []; if (node != null) { var stack = []; stack.push(node); while (stack.length != 0) { var item = stack.pop(); nodes.push(item); var children = item.children; for (var i = children.length - 1; i = 0; i--) stack.push(children[i]); } } return nodes;} 3、广度优先遍历的递归写法: 报错: Maximum call stack size exceeded(…) function wideTraversal(node) { var nodes = []; var i = 0; if (!(node == null)) { nodes.push(node); wideTraversal(node.nextElementSibling); node = nodes[i++]; wideTraversal(node.firstElementChild); } return n……

网友NO.762526

Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结

本文实例讲述了Vue指令v-for遍历输出JavaScript数组及json对象的常见方式。分享给大家供大家参考,具体如下: 定义数据: script new Vue({ el:"#test", data:{ message:"infor", list:["a","b","c","d","e"], web:{ "百度":"https://www.baidu.com", "搜狐":"https://www.sohu.com", "新浪":"https://www.sina.com", "淘宝":"https://www.taobao.com" } } })/script html结构: div id="test" div{{ message }}/div div{{ list }}/div div{{ web }}/div/div 完整示例: !DOCTYPE htmlhtml lang="en"head meta charset="UTF-8" titlev-for遍历/title/headbody div id="test" div{{ message }}/div div{{ list }}/div div{{ web }}/div /div script src="https://cdn.bootcss.com/vue/2.4.4/vue.min.js"/script script new Vue({ el:"#test", data:{ message:"infor", list:["a","b","c","d","e"], web:{ "百度":"https://www.baidu.com", "搜狐":"https://www.sohu.com", "新浪":"https://www.sina.com", "淘宝":"https://www.taobao.com" } } }) /script/body/html 使用 在线HTML/CSS/JavaScrip……

网友NO.244474

java中File类应用遍历文件夹下所有文件

本文要求遍历指定文件夹下的所有文件,包括子文件夹下的文件,供大家参考,具体内容如下 代码: package 遍历文件夹所有文件;import java.io.File;public class Test { public static void main(String[] args){ File file=new File("D:\\tcb\\周总结"); filesDirs(file); } //使用递归遍历文件夹及子文件夹中文件 public static void filesDirs(File file){ //File对象是文件或文件夹的路径,第一层判断路径是否为空 if(file!=null){ //第二层路径不为空,判断是文件夹还是文件 if(file.isDirectory()){ //进入这里说明为文件夹,此时需要获得当前文件夹下所有文件,包括目录 File[] files=file.listFiles();//注意:这里只能用listFiles(),不能使用list() https://files下的所有内容,可能是文件夹,也可能是文件,那么需要一个个去判断是文件还是文件夹,这个判断过程就是这里封装的方法 //因此可以调用自己来判断,实现递归……

网友NO.596342

浅谈JavaScript中的属性:如何遍历属性

在JavaScript中,遍历一个对象的属性往往没有在其他语言中遍历一个哈希(有些语言称为字典)的键那么简单。这主要有两个方面的原因:一个是,JavaScript中的对象通常都处在某个原型链中,它会从一个或多个的上层原型上继承一些属性.第二个原因是,JavaScript中的属性不光有值,它还有一些除了值以外的其他特性,其中一个影响属性遍历的特性就是[[Enumerable]],如果该值为true,则称这个属性是可枚举的,否则反之。 知道了这些,我们就可以把属性的遍历分为四种情况. 注:示例代码中,我们要遍历的对象是浏览器中的window,环境为Firefox 19,代码运行在空白页面中的script标签里。没有Firebug或者其他调试工具的影响(会导入一些全局变量,console等)。 1.遍历可枚举的自身属性 可枚举的意思就是该属性的[[Enumerable]]特性为true,自身属性的意思就是该属性不是从原型……

网友NO.204226

JavaScript实现二叉树定义、遍历及查找的方法详解

本文实例讲述了JavaScript实现二叉树定义、遍历及查找的方法。分享给大家供大家参考,具体如下: 二叉树(binary tree) 在写这篇文章之前说一下数据结构和算法这个系列,这个系列包含了很多东西,比如啥子排序,线性表,广义表,树,图这些大家都是知道的,但是这些东西我们学了之后工作中能用到的又有多少呢,据我所知绝大部分公司,一线码农,屌丝,程序猿是用不到这些东西,既然这样为啥子我还要强调这个系列呢,本人觉得算法和数据结构是程序的基本功,前提想脱离一线码农,普通程序猿行列,说得通俗一点就是让自己变的更牛逼。其次语言都是想通的,只要是掌握了一门语言学习其他语言就如同顺水推舟,不费一点力气。另外还有一点就是我会一直把这个系列写下去, 虽然网上一搜一大筐,已经写烂了,但是我写作的目的有两个,……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757