2017-02-13 11 views
0

Я играю с API Google Диска для Android, и я столкнулся с проблемой. В частности, я заинтересован в App Folder для сохранения и синхронизации данных приложений на разных устройствах. Я могу запросить, существует ли файл с определенным именем файла в папке приложения. я могу получить файл черезПочему OutputStream, возвращаемый DriveContents.getOutputStream(), не действует так, как ожидалось?

driveFile = metadata.getDriveId().asDriveFile(); 

Я могу открыть файл с помощью

driveFile.open(mGoogleApiClient, 
       DriveFile.MODE_WRITE_ONLY, 
       new DownloadProgressListener() {...}) 
.setResultCallback(...); 

И в последующем обратного вызова я могу получить OutputStream с:

OutputStream outputStream = dcr.getDriveContents().getOutputStream(); 

Но проблема в том, что если я попробуйте написать, что OutpustStream ничего не записывается в файл. Я использовал такой код:

OutputStream outputStream = result.getDriveContents().getOutputStream(); 
OutputStreamWriter writer = new  OutputStreamWriter(outputStream); 
try { 
    writer.write("Just some strinh I want to save to Google Drive."); 
} catch (IOException e) { 
    throw new RuntimeException(e); 
} 
Status status = dcr.getDriveContents().commit(mGoogleApiClient, null).await(); 

Использование этого OutputStream в GoogleDrive ничего не записывается. Но если я использую код от https://developers.google.com/drive/android/files#making_modifications, он работает так, как ожидалось.

скопированный фрагмент этого кода от Google для справки:

try { 
    ParcelFileDescriptor parcelFileDescriptor = contents.getParcelFileDescriptor(); 

    FileOutputStream fileOutputStream = new FileOutputStream(parcelFileDescriptor 
     .getFileDescriptor()); 
    Writer writer = new OutputStreamWriter(fileOutputStream); 
    writer.write("hello world"); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Почему OutputStream на DriveContents.getOutputStream подъезд() не работает, как ожидалось? Почему это даже предусмотрено? Или я чего-то не хватает? Версия библиотеки Google Play Services - r29.

ответ

0

Закройте OutputStreamWriter - writer.close(), чтобы зафиксировать вывод.