使用nio遍历文件夹
1、递归方式:
private static void print(File f){
if(f!=null){
if(f.isDirectory()){
File[] fileArray=f.listFiles();
if(fileArray!=null){
for (int i = 0; i < fileArray.length; i++) {
//递归调用
print(fileArray[i]);
}
}
}
else{
System.out.println("文件为:"+f.getName())
}
}
}
2、nio方式
/**
* nio遍历文件夹下面所有的文件
* @return
* @throws IOException
*/
private static List<File> getFiles(String path) throws IOException {
List<File>files = new ArrayList<>();
Files.walkFileTree( Paths.get(path),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("\t正在访问" + file + "文件");
files.add(file.toFile());
return super.visitFile(file, attrs);
} });
return files;
}
!!注意,里面的文件和目录要区别开;
!可以看到它是一个模板接口,但是在walkFileTree中它的类型已经确定了就是Path,因此里面的T类型就是Path类型了;
iv. 接口方法的返回值FileVisitResult是一个枚举类型,walkFileTree就是会根据这个返回值决定是否要继续遍历下去,如果要继续遍历则应该怎样遍历,它总共有4个枚举值:都是FileVisitResult中定义的枚举值
CONTINUE:继续遍历
SKIP_SIBLINGS:继续遍历,但忽略当前节点的所有兄弟节点直接返回上一层继续遍历
SKIP_SUBTREE:继续遍历,但是忽略子目录,但是子文件还是会访问;
TERMINATE:终止遍历
实际使用中通常直接继承FileVisitor的适配器SimpleFileVisitor,因为只需要实现你感兴趣的方法即可,无需4个方法全部都实现;
!!Path可以像String那样进行字符串校验,校验路径中的字符串:都是Path的对象方法
a. boolean startsWith(String other); // 前缀检查
b. boolean startsWith(Path other);
c. boolean endsWith(String other); // 后缀检查
d. boolean endsWith(Path other);
!!比较的都是其path成员字符串里的内容,并不会深入文件系统用完整的绝对路径来比较
使用nio遍历文件夹的更多相关文章
- C#遍历文件夹下所有文件
FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...
- windowsAPI遍历文件夹(速度高于递归)
#region API 遍历文件夹及其子文件夹和子文件 #region 声明WIN32API函数以及结构 ************************************** [DllImpo ...
- C# 遍历文件夹下所有子文件夹中的文件,得到文件名
假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中using System.Data;using System.Drawing;using System.Linq;using Syst ...
- python 遍历文件夹 文件
python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...
- C#遍历文件夹及文件
背景: 想自己实现一个网盘系统,于是需要用到遍历文件(夹)操作. C#基本知识梳理: 1.如何获取指定目录包含的文件和子目录 (1). DirectoryInfo.GetFiles():获取目录中(不 ...
- Java学习随笔3:遍历文件夹及文件的读取和写入
import java.io.File; /** * 遍历文件夹 */ public class ScannerFile { public static void main(String[] args ...
- java 遍历文件夹里的文件
Java遍历文件夹的2种方法: A.不使用递归: import java.io.File; import java.util.LinkedList; public class FileSystem { ...
- python遍历文件夹下的文件
在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...
- JAVA 遍历文件夹下的所有文件
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
随机推荐
- 利用GitLab webhook来实现触发Jenkins自动操作
本文针对如何设置GitLab以及Jenkins,实现每次GitLab上有提交事件的时候,都能触发Jenkins执行相应的操作,主要分为以下几个步骤: 1.新建GitLab测试用例 进入个人GitLab ...
- Webpack系列-第三篇流程杂记
系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 本文章个人理解, 只是为了理清webpack流程, 没有关注内部过多细节 ...
- asp.net mvc 简单项目框架的搭建(二)—— Spring.Net在Mvc中的简单应用
摘要:上篇写了如何搭建一个简单项目框架的上部分,讲了关于Dal和Bll之间解耦的相关知识,这篇来把后i面的部分说一说. 上篇讲到DbSession,现在接着往下讲. 首先,还是把一些类似的操作完善一下 ...
- es6 字符串的扩展和数值的扩展
es6字符串的扩展 1. es6新增的一些方法 1.1 includes 判断是否包括在内,返回一个 true or false 1.2 statsWith 判断是否以什么开头,返回一个 true o ...
- 用mapreduce 处理气象数据集
用mapreduce 处理气象数据集 编写程序求每日最高最低气温,区间最高最低气温 气象数据集下载地址为:ftp://ftp.ncdc.noaa.gov/pub/data/noaa 按学号后三位下载不 ...
- 学习笔记—JDBC
JDBC的概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...
- 微信小程序 canvas导出图片模糊
//保存到手机相册save:function () { wx.canvasToTempFilePath({ x: , y: , width: , //导出图片的宽 height: , //导出图片的高 ...
- webstorm 2018.2.3 cmd+w无法关闭文件
- python的学习笔记01_3 基本运算符 流程控制if while 字符串常用办法
基本运算符 运算符 计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算.比较运算.逻辑运算.赋值运算.成员运算.身份运算.位运算,今天我们暂只学习算数运算.比较运算.逻辑运 ...
- 从零开始搭建服务器部署web项目
前言 该教程旨在完整描述建站过程,会将博主踩过的坑尽量详细的罗列出来.整个建站流程相对较为庞大,因此做了分解,同时适合大家有针对性的查询感兴趣的部分. 一.如何拥有自己的云服务器. 二.域名的购买与解 ...