下面的代码是遍历文件夹中的文件列表,以便在数据库中创建数据,但抛出IllegalStateException: Iterator已获得异常。
Flux.fromIterable(Files.newDirectoryStream(Paths.get(VIDEO_FILE_LOCATION)))
.map(file -> new VideoFile(file.getFileName()
.toString()))
.subscribe(f -> videoRepository.save(f));
全栈
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:787) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:768) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at com.kalarikkal.KalarikkalApplication.main(Kalarikkalpplication.java:30) ~[main/:na]
Caused by: reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.IllegalStateException: Iterator already obtained
Caused by: java.lang.IllegalStateException: Iterator already obtained
无法更正此错误。请帮帮忙。
发布于 2020-04-19 00:00:57
根据123的建议,我已经将代码修改如下。它起作用了..
@Bean
CommandLineRunner init(MongoOperations mongoOperations)
{
return args ->
{
mongoOperations.dropCollection(VideoFile.class);
Path myDir = Paths.get(VIDEO_FILE_LOCATION);
Stream<Path> directorStream = Files.list(myDir);
Flux.fromStream(directorStream)
.doOnNext(path -> mongoOperations.insert(new VideoFile(path.getFileName()
.toString())))
.subscribe();
};
}
https://stackoverflow.com/questions/61291305
复制相似问题