`
NeverFlyAway
  • 浏览: 69561 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

JDK1.7 NIO.2 读写遍历文件树

    博客分类:
  • JDK
阅读更多

使用jdk7 nio.2遍历文件夹里所有文件

首先需要写FileHandler类,继承SimpleFileVisitor<Path>

根据需要重写SimpleFileVisitor里面的方法

比如,访问文件前做些什么,访问文件时做些什么,访问后做些什么

例子中的这行就是遍历每个文件时做的事情,打印一下文件的路径

System.out.println("Visiting:" + path);//do some thing

然后通过Files.walkFileTree遍历headDir这个目录下的所有文件

Files.walkFileTree(headDir, this);

完整的例子如下:

 

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.Objects;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@Service("fileHandler")
public class FileHandler extends SimpleFileVisitor<Path> {

	private static final Logger logger = LogManager.getLogger(FileHandler.class);
	
	public void handleMultipleFiles(String path) {
		Path headDir = Paths.get(path);
		try {
			Files.walkFileTree(headDir, this);
		} catch (IOException e) {
			logger.info("WalkFileTree Failed:", e);
		}
	}

	@Override
	public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {
		Objects.requireNonNull(path);
		Objects.requireNonNull(attrs);
		System.out.println("Visiting:" + path);//do some thing
		return FileVisitResult.CONTINUE;
	}
	
}

 测试类:

 

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppContext.class)
public class TestVisit {
	
	@Autowired
	private FileHandler fileHandler;

	@Test
	public void test() {
		fileHandler.handleMultipleFiles("C:/Mapper");
	}

}

 Spring注解的配置:AppContext.class

 

 

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
@Profile(value = { "default" })
@ComponentScan(basePackages = "com.demo")
public class AppContext {
}

 

总结:

NIO.2读写文件和遍历文件树还是很方便的

除了读写,还有更高级的文件权限管理功能,文件修改的监控等功能等等

对文件的目录操作工具

import java.nio.file.Path;
import java.nio.file.Paths;

Path filePath = Paths.get("/test");
System.out.println(filePath);
System.out.println(filePath.resolve("pretty.json"));
System.out.println(filePath.resolveSibling("pretty2.json"));
System.out.println(filePath.toAbsolutePath());
System.out.println(filePath.getParent());

对文件的操作工具

import java.nio.file.Files;

Files.readAllBytes(path);
Files.write(path, bytes);
Files.copy(source, target);
Files.delete(path);
Files.createDirectory(dir);
Files.createFile(path);
Files.walkFileTree(start, visitor);

 

以上

 

 

分享到:
评论

相关推荐

    jdk1.7 tools.jar

    当想用cmd运行java文件时,出现问题。可能是因为jdk\lib 文件夹缺少tools.jar

    JDK 1.7压缩包.zip

    5. **NIO.2**:改进了Java的非阻塞I/O,提供了文件系统路径操作、文件通道和异步I/O等新功能。 6. **改进的异常处理**:允许一个catch子句捕获多个异常类型,简化了异常处理代码。 7. **二进制 literal**:可以...

    JDK1.7.0.51 免安装版

    4. **文件系统API增强**:NIO.2引入了新的`java.nio.file`包,提供了更强大、更灵活的文件系统操作,例如创建、删除、重命名文件,以及获取文件属性等。 5. **改进的数组初始化**:现在可以使用花括号在类初始化块...

    jdk1.7安装包下载

    7. **文件系统API增强**:` java.nio.file `包在JDK1.7中得到了加强,引入了` Files `类和` Path `接口,提供了更强大的文件操作功能,如更灵活的路径操作和权限管理。 8. **并发改进**:` java.util.concurrent `...

    jdk1.7.zip压缩安装包

    4. **NIO.2**:新的文件系统API,包括异步I/O操作、路径API、文件属性查看等,使文件操作更加灵活高效。 5. **Try-with-resources语句**:这使得资源管理更加简单,确保在代码块结束时正确关闭资源,即使出现异常也...

    jdk1.7安装包.zip

    在这个例子中,文件名为"jdk1.7安装包",这应该是一个包含多个子文件和目录的压缩包。 3. **配置环境变量**:为了让系统能够识别和使用JDK,需要在系统环境变量中设置`JAVA_HOME`指向JDK的安装目录,并在`PATH`变量...

    jdk.tools-1.7.jar

    **标题:“jdk.tools-1.7.jar”** **描述详解:** `jdk.tools-1.7.jar` 是Java Development Kit(JDK)1.7版本的一部分,它包含了用于开发、编译、调试和管理Java应用程序的工具类库。这个特定的JAR文件尤其重要,...

    java-JDK1.7.zip java-JDK1.7.zip

    8. **新的文件系统API(NIO.2)**:提供了更强大和灵活的文件操作功能,包括异步文件操作、文件属性查询以及文件路径操作等。 9. **并发更新集合**:并发集合库(如ConcurrentHashMap)在JDK 1.7中得到了增强,提供...

    jdk 1.7.0.80免安装版

    4. **文件系统API增强**:NIO.2提供了对文件系统的全面访问,包括文件属性、文件遍历和异步I/O操作。 5. **开关表达式支持枚举**:在switch语句中可以直接使用枚举类型作为条件,增强了可读性和代码安全性。 6. **...

    jdk1.7版本jar包下载

    - **NIO.2**:提供了新的文件系统API,增强了对文件操作的支持,包括文件路径、文件属性和异步I/O。 2. **Windows平台支持** JDK 1.7同样为Windows平台提供了全面的支持,包括32位和64位版本。`jdk-7u67-windows-...

    JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现

    JDK1.7 之 java.nio.file.Files 读取文件仅需一行代码实现 java.nio.file.Files 类是 JDK1.7 中引入的新的文件操作类,该类包含了许多有用的方法来操作文件。其中,Files.readAllBytes(Path) 方法可以将整个文件...

    jdk1.7的 tools.jar

    我默认安装的jdk1.7没有这个包 想来大家也有这个问题 分享给大家

    jdk1.7linux.rar

    标题中的"jdk1.7linux.rar"表明这是一个与Java Development Kit (JDK) 版本1.7在Linux操作系统上的版本相关的压缩文件。通常,JDK是Java编程语言的软件开发工具包,它包含了编译器、调试器、文档和其他必要的工具,...

    JDK1.7.zip

    **JDK 1.7,也称为Java Development Kit 7,...JDK 1.7压缩包中的文件“JDK1.7”可能包含了完整的JDK安装包,用于在开发环境中安装和使用Java 1.7版本。安装后,开发者可以利用这些新特性编写更加高效、可维护的代码。

    jdk_1.7.72tools.jar

    该资源为jdk_1.7.72tools.jar,如果下载了还不能解决问题,最好重新安装一下jdk,命名文件夹为java,里面在新建jdk和jre文件夹进行安装

    jdk 1.7.71 jdk1.7.76 jdk1.8 for Mac or for linux

    由于资源太大 上传不了,故将所有资源放到云盘,文档内有网盘链接,这些jdk都是mac linux安装包 win用户谨慎下载

    jdk1.7u80 64位第三部分

    java运行环境 jdk1.7u80 jar 64bit 64位jdk下载,上传限制文件分3部分上传,第三部分

    jdk1.7.rar

    5. **更好的文件系统访问(NIO.2)**:引入了`java.nio.file`包,提供了更强大的文件系统操作,如遍历目录、删除、重命名等。 6. **改进的数组初始化**:现在可以使用菱形操作符来初始化数组,使得数组初始化更简洁...

    32位的1.7JDK.zip,jdk1.7windows32位

    32位的1.7JDK.zip,jdk1.7windows32位,解压开直接就是个jdk-7u72-windows-i586.exe,这是32位的,也是较罕见,现在多数都是64位操作系统,但总有旧电脑需要32位的。

Global site tag (gtag.js) - Google Analytics