2015-11-13 47 views
4

我使用JSON API建立在谷歌雲桶的空文件夾 - 谷歌API客戶端庫的Java訪問谷歌從雲存儲中的對象。我需要創建(不上傳)存儲桶中的空文件夾。 Google Developer Web Console has that option to creating a directory,但在Java API或gsutil命令中,兩者都沒有create folder命令。如果有人知道,請讓我知道。在此先感謝...如何使用Java API

+1

請問爲什麼?另外,從技術上講,雲存儲中沒有「文件夾」的概念,因爲它不是文件系統。 https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork –

+0

當然可以。我知道文件系統是不同的。請看這種情況下,我正在爲用戶創建一個用戶界面。用戶界面與Google Bucket Storage同步。所以,他可以像創建/刪除文件和文件夾一樣組織他的文件。因此,刪除對象的命令是存在的,但創建一個目錄有沒有在谷歌**開發者控制檯**,但它不是在Java的API或命令的gsutil可用。 –

回答

3

您可以通過上傳大小爲零的對象以斜槓模仿文件夾。

作爲問題的評論指出,谷歌雲端存儲並不是一個文件系統,模擬文件夾具有很大的侷限性。

+0

非常感謝。我會盡力實現你的想法。 –

1

這是我的Java方法來創建一個空的(模擬)文件夾:

public static void createFolder(String name) throws IOException { 
    Channels.newOutputStream(
      createFile(name + "/") 
    ).close(); 
} 

public static GcsOutputChannel createFile(String name) throws IOException { 
    return getService().createOrReplace(
      new GcsFilename(getName(), name), 
      GcsFileOptions.getDefaultInstance() 
    ); 
} 

private static String name; 

public static String getName() { 
    if (name == null) { 
     name = AppIdentityServiceFactory.getAppIdentityService().getDefaultGcsBucketName(); 
    } 
    return name; 
} 

public static GcsService service; 

public static GcsService getService() { 
    if (service == null) { 
     service = GcsServiceFactory.createGcsService(
       new RetryParams.Builder() 
         .initialRetryDelayMillis(10) 
         .retryMaxAttempts(10) 
         .totalRetryPeriodMillis(15000) 
         .build()); 
    } 
    return service; 
} 
1

我認爲是更好的,你創建的文件名中的文件夾。例如,如果你需要一個文件夾,名爲圖像等一個叫文檔,當你給對象的名稱上傳做到這一點通過以下方式圖像/ name_of_file文檔/ name_of_file

如果文件的名稱是images/dogImage並且您上傳該文件,則會在您的存儲桶中找到一個名爲images的文件夾。

我希望能幫到你和其他人