Как я могу перенести файлы из одной папки в другую?
Программа загружает файлы в папку «Журнал» с подпапкой «bin». Она также создает (или создаст, как только я ее закодирую) другую папку. называется "Log. (currentdate)" с подпапкой "bin".
Я читал в Интернете, что в Google API нет способа переноса файлов между папками, как вы можете сделать в windows explorer. Вместо этого вы должны изменить идентификаторы родительской папки со старой на новую.
На своем веб-сайте Google предлагает следующий код
String fileId = "1sTWaJ_j7PkjzaBWtNc3IzovK5hQf21FbOw9yLeeLPNQ";
String folderId = "0BwwA4oUTeiV1TGRPeTVjaWRDY1E";
// Retrieve the existing parents to remove
File file = driveService.files().get(fileId)
.setFields("parents")
.execute();
StringBuilder previousParents = new StringBuilder();
for (String parent : file.getParents()) {
previousParents.append(parent);
previousParents.append(',');
}
// Move the file to the new folder
file = driveService.files().update(fileId, null)
.setAddParents(folderId)
.setRemoveParents(previousParents.toString())
.setFields("id, parents")
.execute();
Это делается только для одного файла, но мне нужно адаптировать его для всех файлов, а не только для одного.
В моем основном методе это то, что я имею до сих пор. Код печатает имя и идентификатор файла для каждого файла в папке со строкой идентификатора «randomfolderid». Вы можете получить идентификатор папки, посмотрев на URL.
//Get fileIds for every file in folder
String fileId = "";
FileList fileIdList = service.files().list()
.setQ("'randomfolderid' in parents ")
.execute();
List<File> files = fileIdList.getFiles();
if (files == null || files.isEmpty()) {
System.out.println("No files found.");
} else {
System.out.println("Files:");
for (File file : files) {
fileId = file.getId();
System.out.printf("%s (%s)\n", file.getName(), fileId);
Таким образом, идея заключалась в том, что, пока программа перебирает файлы, для каждого файла File, помимо печати имени и fileId, она будет также измените идентификаторы родительской папки. Полученный код выглядит следующим образом. Опять же, это все в основном методе.
String fileId = "";
FileList fileIdList = service.files().list()
.setQ("'17DD5EBwUsMj8vPDtKpznXVLbs3kOHVMw' in parents ")
.execute();
List<File> files = fileIdList.getFiles();
if (files == null || files.isEmpty()) {
System.out.println("No files found.");
} else {
System.out.println("Files:");
for (File file : files) {
fileId = file.getId();
System.out.printf("%s (%s)\n", file.getName(), fileId);
//code works fine up till here
StringBuilder previousParents = new StringBuilder();
for (String parent : file.getParents()) {
previousParents.append(parent);
previousParents.append(',');
}
// Move the file to the new folder (replace old parent id with new parent id)
file = service.files().update(fileId, null)
.setAddParents(FolderId[1])
.setRemoveParents(previousParents.toString())
.setFields("id, 'parents")
.execute();
FolderId [1] содержит строку folderid, которую я хочу заменить.
Если у вас есть другой способ сделать это, я очень хотелось бы иметь фрагменты кода в качестве примеров.