2012-01-21 2 views
0

У меня есть следующий фрагмент кода для загрузки zip-файла без преобразования в Google Doc.Как перезаписать zip-файл с тем же именем файла при загрузке в Google Doc

package sample.docs; 

import com.google.gdata.client.docs.*; 
import com.google.gdata.data.docs.*; 
import com.google.gdata.util.*; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import com.google.gdata.client.media.ResumableGDataFileUploader; 
import com.google.gdata.client.uploader.FileUploadData; 
import com.google.gdata.client.uploader.ProgressListener; 
import com.google.gdata.client.uploader.ResumableHttpFileUploader; 
import com.google.gdata.data.media.MediaFileSource; 
import java.io.File; 
import java.net.URL; 
import java.util.concurrent.CountDownLatch; 
import java.util.concurrent.ExecutorService; 
import java.util.concurrent.Executors; 
import java.util.concurrent.TimeUnit; 

public class DocumentListDemo { 

    private static class FileUploadProgressListener implements ProgressListener { 

     final CountDownLatch countDownLatch = new CountDownLatch(1); 

     @Override 
     public synchronized void progressChanged(ResumableHttpFileUploader uploader) 
     { 
      final String fileId = ((FileUploadData) uploader.getData()).getFileName(); 
      switch(uploader.getUploadState()) { 
      case COMPLETE: 
      case CLIENT_ERROR: 
       countDownLatch.countDown(); 
       System.out.println(fileId + ": Completed"); 
       break; 

      case IN_PROGRESS: 
       System.out.println(fileId + ":" + String.format("%3.0f", uploader.getProgress() * 100) + "%"); 
       break; 

      case NOT_STARTED: 
       System.out.println(fileId + ":" + "Not Started"); 
       break; 
      } 
     } 

     public void await() throws InterruptedException { 
      countDownLatch.await(); 
     } 
    } 

    public static void main(String[] args) throws MalformedURLException, IOException, ServiceException, InterruptedException, DocumentListException { 
     int MAX_CONCURRENT_UPLOADS = 10; 
     int PROGRESS_UPDATE_INTERVAL = 1000; 
     int DEFAULT_CHUNK_SIZE = 10485760; 

     DocsService client = new DocsService("JStock"); 
     client.setUserCredentials("[email protected]", "this-is-my-password"); 

     // Create a listener 
     FileUploadProgressListener listener = new FileUploadProgressListener(); 

     // Pool for handling concurrent upload tasks 
     ExecutorService executor = Executors.newFixedThreadPool(MAX_CONCURRENT_UPLOADS); 

     File file = new File("c:\\Pictures.zip"); 
     String contentType = DocumentListEntry.MediaType.fromFileName(file.getName()).getMimeType(); 
     MediaFileSource mediaFile = new MediaFileSource(file, contentType); 
     URL createUploadUrl = new URL("https://docs.google.com/feeds/upload/create-session/default/private/full"); 
     ResumableGDataFileUploader uploader = new ResumableGDataFileUploader.Builder(client, createUploadUrl, mediaFile, null) 
      .title(mediaFile.getName()) 
      .chunkSize(DEFAULT_CHUNK_SIZE).executor(executor) 
      .trackProgress(listener, PROGRESS_UPDATE_INTERVAL) 
      .build(); 
     uploader.start(); 


     // Wait for completion. 
     listener.await(); 

     // Thread clean up. 
     executor.shutdownNow(); 
     executor.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); 

     System.out.println("done!");    
    } 
} 

Чтобы скомпилировать вышеуказанный код, необходимы следующие 4 библиотеки.

enter image description here

Однако, я понимаю, когда я пытаюсь загрузить файл с таким же именем файла снова и снова, предыдущий файл загружаемого не будет перезаписан.

Это результат, если я выполняю вышеуказанный код 4 раза.

enter image description here

Могу ли я знать, как я могу переписать файл с таким же именем файла, во время загрузки в Google Doc?

ответ

0

Вот как файл перезаписи работает в Google Doc.

// Rename and overwrite. 
    documentListEntry.setTitle(new PlainTextConstruct(getGoogleDocTitle(checksum, date, version))); 
    uploader = new ResumableGDataFileUploader.Builder(client, createUploadUrl, mediaFile, documentListEntry) 
    .title(getGoogleDocTitle(checksum, date, version)) 
    .chunkSize(DEFAULT_CHUNK_SIZE).executor(executor) 
    .trackProgress(listener, PROGRESS_UPDATE_INTERVAL).requestType(ResumableGDataFileUploader.RequestType.UPDATE) 
    .build(); 

Чтобы получить полный фрагмент кода, пожалуйста, обратитесь к saveToGoogleDoc функции полезности.

Смежные вопросы