【问题标题】:StorageService gives an error on GluonHQ framework - How do I solve this?StorageService 在 GluonHQ 框架上出现错误 - 我该如何解决?
【发布时间】:2019-08-10 10:14:55
【问题描述】:

通常我一直在 JavaFX 中使用 FileChooser。超级容易做到这一点。只需调用它,它将打开一个新窗口,您可以在其中选择文件。完成!

FileChooser 不适用于 Android 和 Iphone。我必须选择StorageService

https://docs.gluonhq.com/charm/javadoc/5.0.1/com/gluonhq/charm/down/plugins/StorageService.html

File privateStorage = Services.get(StorageService.class)
                          .flatMap(StorageService::getPrivateStorage)
                          .orElseThrow(() -> {
                              new FileNotFoundException("Could not access private storage.");
                          });

但这里的问题是它给出了一个错误:

The method orElseThrow(Supplier<? extends X>) in the type Optional<File> is not applicable for the arguments (() -> {})

那么我该如何解决呢?

【问题讨论】:

  • @JoséPereda 错误消失,但我无法选择任何文件。我一定是误解了 StorageService 类的用途?
  • 从您的 lambda 中删除 {},或确保使用 return
  • 没有类似的“FileChooser”对话框出现,如果这就是你的意思的话。 privateStorage 是您可以读取和写入文件的文件夹根目录。当您在移动设备上安装应用程序时,您可以在沙盒区域执行此操作。
  • @JoséPereda 所以当我运行 'File privateStorage = Services.get(StorageService.class) .flatMap(StorageService::getPrivateStorage) .orElseThrow(() -> new FileNotFoundException("Could not access private storage .")); ´ 我可以访问 Android/Iphone 根文件夹中的 ´/´?
  • 不,通过getPrivateStorage,您可以访问您的app 位置中的给定文件夹。请参阅getPublicStorage 以访问其他位置,例如相机文件。另请阅读:developer.android.com/training/data-storage/files,了解您在 Android 上可以做什么和不可以做什么。

标签: java javafx gluon-mobile javafxports


【解决方案1】:

你可以这样做:

Optional.empty().orElseThrow(FileNotFoundException::new);

Optional.empty().orElseThrow(()->new FileNotFoundException("Some exception"));

Optional.empty().orElseThrow(() -> {
            return new FileNotFoundException("Some exception");
        });

值得一读:When are braces optional in Java 8 lambda syntax?

【讨论】:

  • 这会打开一个我可以选择文件的窗口吗?
  • @Heretic 是如何解决错误的示例。如何使用#orElseThrow
猜你喜欢
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2020-08-18
  • 2019-10-05
  • 2016-06-19
  • 1970-01-01
  • 2020-02-26
  • 2022-07-12
相关资源
最近更新 更多