直接从Java中的Google云端硬盘阅读

问题描述 投票:1回答:4

我需要以编程方式阅读存储在Google云端硬盘中的文件内容。我很期待某种形式 InputStream is = <drive_stuff>.read(fileID); 有帮助吗?如果我可以使用某种方式回写文件,我也会很感激

OutputStream dos = new DriveOutputStream(driveFileID); dos.write(data);

如果这种方便的方法对于Drive可以提供的内容来说太多了,那么我想就如何直接从java.io.InputStream / OutputStream / Reader / Writer读取/写入Drive而不创建临时本地文件的建议我想要发送到驱动器的数据的副本。谢谢!

java file-io google-drive-sdk google-api-java-client
4个回答
0
投票

请查看Google Drive SDK documentation上提供的DrEdit Java示例。此示例显示如何授权和构建读取元数据,文件数据和将内容上载到Google云端硬盘的请求。

以下是一个代码段,展示了如何使用ByteArrayContent将媒体上传到存储在字节数组中的Google云端硬盘:

/**
 * Create a new file given a JSON representation, and return the JSON
 * representation of the created file.
 */
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws IOException {
  Drive service = getDriveService(req, resp);
  ClientFile clientFile = new ClientFile(req.getReader());
  File file = clientFile.toFile();

  if (!clientFile.content.equals("")) {
    file = service.files().insert(file,
        ByteArrayContent.fromString(clientFile.mimeType, clientFile.content))
        .execute();
  } else {
    file = service.files().insert(file).execute();
  }

  resp.setContentType(JSON_MIMETYPE);
  resp.getWriter().print(new Gson().toJson(file.getId()).toString());
}

0
投票

这是我的应用程序中的一个(不完整的)片段,可能有所帮助。

            URL url = new URL(urlParam);
        HttpURLConnection connection = (HttpURLConnection) url
                .openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("GET");
        connection
                .setRequestProperty("Authorization",
                        "OAuth "+accessToken);

        String docText = convertStreamToString(connection.getInputStream());

0
投票

使用google-api-services-drive-v3-rev24-java-1.22.0: 要读取文件的内容,请确保在凭证授权方法/代码中执行DriveScopes.DRIVE_READONLY时设置GoogleAuthorizationCodeFlow.Builder(...)。 你需要你想要阅读的文件的fileId。你可以这样做: FileList result = driveService.files().list().execute(); 然后你可以为你要阅读的resultfile迭代fileId

完成后,阅读内容将是这样的:

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
driveService.files().get(fileId).executeMediaAndDownloadTo(outputStream);
InputStream in = new ByteArrayInputStream(outputStream.toByteArray());

0
投票

//构建新的授权API客户端服务。 Drive service = getDriveService();

    // Print the names and IDs for up to 10 files.
    FileList result = service.files().list()
         .setPageSize(10)
         .setFields("nextPageToken, files(id, name)")
         .execute();

    List<File> files = result.getFiles();
    if (files == null || files.size() == 0) {
        System.out.println("No files found.");
    } else {
        System.out.println("Files:");
        for (File file : files) {
            System.out.printf("%s (%s)\n", file.getName(), file.getId());
            String fileId = file.getId();

                Export s=service.files().export(fileId, "text/plain");
                InputStream in=s.executeMediaAsInputStream();
                InputStreamReader isr=new InputStreamReader(in);
                BufferedReader br = new BufferedReader(isr);
                String line = null;

                StringBuilder responseData = new StringBuilder();
                while((line = br.readLine()) != null) {
                    responseData.append(line);
                }
                System.out.println(responseData);
            } 
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.