我试图编写一个脚本,查看给定目录中的所有文件,获取它们的每个路径,并将其打印到屏幕上。每当我运行我的程序,它说流不能解析为一个类型。我知道这个错误与我的变量类型有关,但我不知道要将我的变量类型改成什么。感谢您的帮助。
我的代码:
import java.nio.file.Paths;
import java.nio.file.Path;
import java.nio.file.Files;
import java.nio.stream.Stream;
class FileFinder{
public void getFiles(){
Path path = Paths.get("C:/Users/MYNAME/Documents/TestFiles");
Stream<Path> subPaths = Files.walk(path);
subPaths.forEach(System.out::println);
}
}
错误消息:
Exception in thread "getFiles" java.lang.Error: Unresolved compilation problem:
Stream cannot be resolved to a type
at FileFinder.getFiles(FileFinder.java:12)
1条答案
按热度按时间v8wbuo2f1#
错误的流
你有一个
java.nio.stream.Stream
. 但你需要一个进口java.util.stream.Stream
.的javadoc
Files.walk
告诉我们该方法返回java.util.stream.Stream<Path>
对象。关闭i/o流
顺便说一下
Stream
对象实现AutoCloseable
. 因此,您可以使用try with resources语法来确保它以某种方式正确关闭。虽然关闭某些类型的流可能是不必要的,但是应该关闭涉及i/o的流。我想这包括你的
Files.walk
溪流。引用
Stream
接口javadoc:大多数流示例在使用后实际上不需要关闭,因为它们由集合、数组或生成函数支持,不需要特殊的资源管理。通常,只有源是io通道的流(如files.lines(path)返回的流)才需要关闭。如果流确实需要关闭,则必须将其作为try with resources语句或类似控制结构中的资源打开,以确保在其操作完成后立即关闭。
基本代码示例
完整示例代码应用程序
这是一个完整的应用程序,包括
import
声明。运行时: