【发布时间】: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