这是我为从谷歌驱动器下载文件而创建的,希望对您有所帮助。
请参考这个文档
/** Application name. */
private static final String APPLICATION_NAME = "Drive API Java Quickstart";
/** Directory to store user credentials for this application. */
private static final java.io.File DATA_STORE_DIR = new java.io.File(
System.getProperty("user.home"),
".credentials/n/drive-java-quickstart");
/** Global instance of the {@link FileDataStoreFactory}. */
private static FileDataStoreFactory DATA_STORE_FACTORY;
/** Global instance of the JSON factory. */
private static final JsonFactory JSON_FACTORY = JacksonFactory
.getDefaultInstance();
/** Global instance of the HTTP transport. */
private static HttpTransport HTTP_TRANSPORT;
/**
* Global instance of the scopes required by this quickstart.
*
* If modifying these scopes, delete your previously saved credentials at
* ~/.credentials/drive-java-quickstart
*/
private static final java.util.Collection<String> SCOPES = DriveScopes
.all();
static {
try {
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR);
} catch (Throwable t) {
t.printStackTrace();
System.exit(1);
}
}
/**
* Creates an authorized Credential object.
*
* @return an authorized Credential object.
* @throws IOException
*/
public static Credential authorize() throws IOException {
// Load client secrets.
InputStream in = Quickstart.class
.getResourceAsStream("/client_secret.json");
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(
JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(DATA_STORE_FACTORY)
.setAccessType("offline").build();
Credential credential = new AuthorizationCodeInstalledApp(flow,
new LocalServerReceiver()).authorize("user");
System.out.println("Credentials saved to "
+ DATA_STORE_DIR.getAbsolutePath());
return credential;
}
/**
* Build and return an authorized Drive client service.
*
* @return an authorized Drive client service
* @throws IOException
*/
public static Drive getDriveService() throws IOException {
Credential credential = authorize();
return new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME).build();
}
public static void main(String[] args) throws IOException {
// Build a new authorized API client service.
Drive service = getDriveService();
// Print the names and IDs for up to 10 files.
FileList result = service.files().list().execute();
List<File> files = result.getFiles();
if (files == null || files.size() == 0) {
System.out.println("No files found.");
} else {
for (File file : files) {
String fname = file.getName();
String ex = fname.substring(fname.lastIndexOf(".") + 1);
try {
Files f = service.files();
HttpResponse httpResponse = null;
if (ex.equalsIgnoreCase("xlsx")) {
httpResponse = f
.export(file.getId(),
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
.executeMedia();
} else if (ex.equalsIgnoreCase("docx")) {
httpResponse = f
.export(file.getId(),
"application/vnd.openxmlformats-officedocument.wordprocessingml.document")
.executeMedia();
} else if (ex.equalsIgnoreCase("pptx")) {
httpResponse = f
.export(file.getId(),
"application/vnd.openxmlformats-officedocument.presentationml.presentation")
.executeMedia();
} else if (ex.equalsIgnoreCase("pdf")
|| ex.equalsIgnoreCase("jpg")
|| ex.equalsIgnoreCase("png")) {
Get get = f.get(file.getId());
httpResponse = get.executeMedia();
}
if (null != httpResponse) {
InputStream instream = httpResponse.getContent();
FileOutputStream output = new FileOutputStream(
file.getName());
try {
int l;
byte[] tmp = new byte[2048];
while ((l = instream.read(tmp)) != -1) {
output.write(tmp, 0, l);
}
} finally {
output.close();
instream.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}