首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Files.newDirectoryStream抛出java.lang.IllegalStateException:已获取迭代器

Files.newDirectoryStream抛出java.lang.IllegalStateException:已获取迭代器
EN

Stack Overflow用户
提问于 2020-04-18 23:03:24
回答 1查看 129关注 0票数 0

下面的代码是遍历文件夹中的文件列表,以便在数据库中创建数据,但抛出IllegalStateException: Iterator已获得异常。

代码语言:javascript
运行
复制
Flux.fromIterable(Files.newDirectoryStream(Paths.get(VIDEO_FILE_LOCATION)))
          .map(file -> new VideoFile(file.getFileName()
                                         .toString()))
          .subscribe(f -> videoRepository.save(f));

全栈

代码语言:javascript
运行
复制
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

无法更正此错误。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2020-04-19 00:00:57

根据123的建议,我已经将代码修改如下。它起作用了..

代码语言:javascript
运行
复制
    @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();
        };
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61291305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档