У меня есть подпапка bin на диске Google, которая имеет 1500-1600 bin-файлов и занимает около 1 ГБ в хранилище. Моя программа перестает загружать 544 файла, и я не знаю почему. Вот мои ограничения в консоли API Google:
- Ограничение квоты
- Количество запросов в день 1 000 000 000
- Количество запросов в 100 секунд на пользователя 1 000
- Количество запросов в 100 секунд 10 000
Вот метод для составления списка файлов bin.
public static final List<File> getbinfolderlist(Drive service, String bin_folder_id) throws IOException {
try {
List<File> list = new ArrayList<File>();
String pageToken = null;
do {
FileList result = service.files().list()
.setQ("'" + bin_folder_id + "' in parents")
.setPageToken(pageToken)
.execute();
for (File file : result.getFiles()) {
list.add(file);
}
pageToken = result.getNextPageToken();
} while (pageToken != null);
return list;
} catch (Exception e) {
return null;
}
}
Выполнение этого в основном методе:
List<File> bin_files = getbinfolderlist(service, bin_folder_id);
System.out.println(bin_files.size());
возвращает точное количество файлов в папке bin, поэтому я знаю, что все файлы bin перечислены.
Метод итерации по списку и загрузки файлов bin заключается в следующем:
public static void downloadBinFiles(Drive service, List<File> bin_files, String dst_dir) {
try {
int i = 0;
for (File file : files) {
String fileId = file.getId();
String fileName = file.getName();
//need to check if folder exists. If not, create folder.
System.out.println("File downloading is: " + fileName);
OutputStream outputstream = new FileOutputStream(dst_dir + fileName);
service.files().get(fileId)
.executeMediaAndDownloadTo(outputstream);
outputstream.flush();
outputstream.close();
i++;
System.out.println(i + " files downloaded.");
}
} catch (Exception e) {
Console console = System.console();
console.writer().println("Error.");
}
}
И по какой-то причине в файле 544 всегда появляется сообщение «Ошибка». Есть ли какая-то квота, по которой я нажимаю Я не знаю, и нужно увеличить? Есть ли что-то в коде? Я использую эту команду, чтобы выполнить загрузку файлов bin в основном методе
downloadBinFiles(service, bin_files, bin_path );
Сообщение об ошибке, которое я получаю, это:
com.google.api.client.http.HttpResponseException: 416 Requested range not satisfiable
{
"error": {
"errors": [
{
"domain": "global",
"reason": "requestedRangeNotSatisfiable",
"message": "Request range not satisfiable"
}
],
"code": 416,
"message": "Request range not satisfiable"
}
}
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1070)
at com.google.api.client.googleapis.media.MediaHttpDownloader.executeCurrentRequest(MediaHttpDownloader.java:245)
at com.google.api.client.googleapis.media.MediaHttpDownloader.download(MediaHttpDownloader.java:199)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeMediaAndDownloadTo(AbstractGoogleClientRequest.java:562)
at com.google.api.services.drive.Drive$Files$Get.executeMediaAndDownloadTo(Drive.java:3256)
at DriveQuickstart.downloadBinFiles(DriveQuickstart.java:223)
at DriveQuickstart.main(DriveQuickstart.java:127)
Редактировать: Если это уместно, Размеры файлов bin варьируются от <0 КБ до чуть менее 14 000 КБ. Размер папки составляет 843 МБ. </p>