【问题标题】:FileNotFoundException when CREATING a google drive file创建谷歌驱动器文件时出现 FileNotFoundException
【发布时间】: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


【解决方案1】:

原来有问题的行是

 java.io.File filePath = new java.io.File("profile.json");

我需要输入文件的真实路径,而不仅仅是“profile.json”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多