使用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);
以上
相关推荐
当想用cmd运行java文件时,出现问题。可能是因为jdk\lib 文件夹缺少tools.jar
5. **NIO.2**:改进了Java的非阻塞I/O,提供了文件系统路径操作、文件通道和异步I/O等新功能。 6. **改进的异常处理**:允许一个catch子句捕获多个异常类型,简化了异常处理代码。 7. **二进制 literal**:可以...
4. **文件系统API增强**:NIO.2引入了新的`java.nio.file`包,提供了更强大、更灵活的文件系统操作,例如创建、删除、重命名文件,以及获取文件属性等。 5. **改进的数组初始化**:现在可以使用花括号在类初始化块...
7. **文件系统API增强**:` java.nio.file `包在JDK1.7中得到了加强,引入了` Files `类和` Path `接口,提供了更强大的文件操作功能,如更灵活的路径操作和权限管理。 8. **并发改进**:` java.util.concurrent `...
4. **NIO.2**:新的文件系统API,包括异步I/O操作、路径API、文件属性查看等,使文件操作更加灵活高效。 5. **Try-with-resources语句**:这使得资源管理更加简单,确保在代码块结束时正确关闭资源,即使出现异常也...
在这个例子中,文件名为"jdk1.7安装包",这应该是一个包含多个子文件和目录的压缩包。 3. **配置环境变量**:为了让系统能够识别和使用JDK,需要在系统环境变量中设置`JAVA_HOME`指向JDK的安装目录,并在`PATH`变量...
**标题:“jdk.tools-1.7.jar”** **描述详解:** `jdk.tools-1.7.jar` 是Java Development Kit(JDK)1.7版本的一部分,它包含了用于开发、编译、调试和管理Java应用程序的工具类库。这个特定的JAR文件尤其重要,...
8. **新的文件系统API(NIO.2)**:提供了更强大和灵活的文件操作功能,包括异步文件操作、文件属性查询以及文件路径操作等。 9. **并发更新集合**:并发集合库(如ConcurrentHashMap)在JDK 1.7中得到了增强,提供...
4. **文件系统API增强**:NIO.2提供了对文件系统的全面访问,包括文件属性、文件遍历和异步I/O操作。 5. **开关表达式支持枚举**:在switch语句中可以直接使用枚举类型作为条件,增强了可读性和代码安全性。 6. **...
- **NIO.2**:提供了新的文件系统API,增强了对文件操作的支持,包括文件路径、文件属性和异步I/O。 2. **Windows平台支持** JDK 1.7同样为Windows平台提供了全面的支持,包括32位和64位版本。`jdk-7u67-windows-...
JDK1.7 之 java.nio.file.Files 读取文件仅需一行代码实现 java.nio.file.Files 类是 JDK1.7 中引入的新的文件操作类,该类包含了许多有用的方法来操作文件。其中,Files.readAllBytes(Path) 方法可以将整个文件...
我默认安装的jdk1.7没有这个包 想来大家也有这个问题 分享给大家
标题中的"jdk1.7linux.rar"表明这是一个与Java Development Kit (JDK) 版本1.7在Linux操作系统上的版本相关的压缩文件。通常,JDK是Java编程语言的软件开发工具包,它包含了编译器、调试器、文档和其他必要的工具,...
**JDK 1.7,也称为Java Development Kit 7,...JDK 1.7压缩包中的文件“JDK1.7”可能包含了完整的JDK安装包,用于在开发环境中安装和使用Java 1.7版本。安装后,开发者可以利用这些新特性编写更加高效、可维护的代码。
该资源为jdk_1.7.72tools.jar,如果下载了还不能解决问题,最好重新安装一下jdk,命名文件夹为java,里面在新建jdk和jre文件夹进行安装
由于资源太大 上传不了,故将所有资源放到云盘,文档内有网盘链接,这些jdk都是mac linux安装包 win用户谨慎下载
java运行环境 jdk1.7u80 jar 64bit 64位jdk下载,上传限制文件分3部分上传,第三部分
5. **更好的文件系统访问(NIO.2)**:引入了`java.nio.file`包,提供了更强大的文件系统操作,如遍历目录、删除、重命名等。 6. **改进的数组初始化**:现在可以使用菱形操作符来初始化数组,使得数组初始化更简洁...
32位的1.7JDK.zip,jdk1.7windows32位,解压开直接就是个jdk-7u72-windows-i586.exe,这是32位的,也是较罕见,现在多数都是64位操作系统,但总有旧电脑需要32位的。