java stream 多文件夹,Java FileOutputStream:相对于程序文件夹的路径?
时间: 2023-11-28 15:51:15 浏览: 135
Java中读取多个文件夹可以使用Java 8中新增的Stream API来实现。可以使用Files类的walk()方法来遍历指定的目录和文件,然后使用filter()方法过滤出需要的文件,最后使用map()方法将文件转换为流。
对于相对于程序文件夹的路径,可以使用相对路径来指定文件的位置。在Java程序中,相对路径是相对于当前工作目录的路径。可以使用System.getProperty("user.dir")方法获取当前工作目录的路径,然后使用相对路径来定位文件位置。
例如,如果文件夹结构如下:
```
- project
- src
- main
- java
- com
- example
- Main.java
- resources
- folder1
- file1.txt
- folder2
- file2.txt
```
那么,在Main.java中可以使用如下代码来读取文件:
```java
Path basePath = Paths.get(System.getProperty("user.dir"));
Path folder1Path = basePath.resolve("src/main/resources/folder1");
Path folder2Path = basePath.resolve("src/main/resources/folder2");
try (Stream<Path> stream = Stream.concat(Files.walk(folder1Path), Files.walk(folder2Path))) {
stream.filter(Files::isRegularFile)
.map(Path::toFile)
.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
```
这里使用了Paths类来构建相对路径,然后使用Files.walk()方法遍历指定的目录和文件。最后使用filter()方法过滤出普通文件,然后使用map()方法将Path对象转换为File对象,最终通过forEach()方法打印文件路径。
阅读全文