【发布时间】:2020-02-25 16:02:28
【问题描述】:
我在 google 上有一个设置了 firebase 的应用,用户可以登录该应用,我希望能够存储应用数据。
GoogleSignInOptions 设置如下
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestEmail()
.requestScopes(Scope(Scopes.DRIVE_APPFOLDER))
.build()
而createFile方法是
public Task<String> createFile() {
return Tasks.call(mExecutor, () -> {
File fileMetadata = new File();
fileMetadata.setName("profile.json");
fileMetadata.setParents(Collections.singletonList("appDataFolder"));
java.io.File filePath = new java.io.File("profile.json");
FileContent mediaContent = new FileContent("application/json", filePath);
File file = mDriveService.files().create(fileMetadata, mediaContent)
.setFields("id")
.execute();
return file.getId();
});
}
但由于某种原因,调用 createFile 方法会引发以下异常
java.io.FileNotFoundException: profile.json (No such file or directory)
为什么?对于更多上下文,这在应用程序的调试版本中进行了测试
【问题讨论】:
-
你是在创建文件还是读取文件?
-
看起来您正在尝试创建一个内容为本地文件内容的文件。但是,本地文件的路径位于“当前工作目录”中——通常是调用 JVM 的目录。您是否检查过该文件是否存在于该路径中?您为什么不为本地
profile.json提供正确的完整路径? -
@RealSkeptic,你说得对,它没有找到本地文件的路径。调用我的本地文件的“路径”方法只是返回了“profile.json”。我试图只删除“create”方法的“mediaContent”部分,现在它不会崩溃,但是当我尝试列出我的驱动器文件时,文件列表为空
-
您的本地文件并不代表您的真实文件。您必须在操作系统中找到路径并使用 real 路径创建
java.io.File对象,而不仅仅是profile.json。这未连接到 Google 云端硬盘。如果还有第二个问题,你应该单独列出。
标签: java google-api google-drive-api google-api-java-client