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

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

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

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

菜鸟成长之路:Java程序员职场全攻略
  • 类型:Java职场大小:51.4 MB格式:PDF作者:吴亚峰
立即下载

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的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

推荐内容

idea2020注册激活码(激活到2100年)

实例分析Java实现的zip压缩及解压缩工具类

python3 pandas 如何读取MySQL数据和插入

ThinkPHP3.2.3框架如何实现分页功能

深入理解JS函数stack size计算方法

展开 +

收起 -

java遍历文件 相关电子书
学习笔记
网友NO.589982

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.808011

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.757979

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.308760

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

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

网友NO.902386

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

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

<
1
>

电子书 编程教程 文档 软件 源码 视频

Copyright 2018-2020 xz577.com 码农之家

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

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

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