我希望通過GAE讀/寫blob到GCS。使用從Google Cloud Storage讀取對象始終返回空
我寫一個對象(HashMap的)以GCS:不過,我面臨着一個非常奇怪的問題
GcsOutputChannel outputChannel =
gcsService.createOrReplace(fileName, GcsFileOptions.getDefaultInstance());
ObjectOutputStream oout =
new ObjectOutputStream(Channels.newOutputStream(outputChannel));
oout.writeObject(content);
oout.close();
現在,當我試圖讀取相同的對象時,它總是返回null!
GcsInputChannel readChannel = gcsService.openPrefetchingReadChannel(fileName, 0, BUFFER_SIZE);
ObjectInputStream oin = new ObjectInputStream(Channels.newInputStream(readChannel));
Object obj = oin.readObject();
System.out.println("obj is " + obj); //this obj is null!!
我還可以看到使用GCS瀏覽器創建的對象,看到了時間戳,它具有一定的規模。 在閱讀之前,我可以獲取該對象的元數據,並且返回正常並具有正確的長度!只是「readObject」返回null! 嘗試了其他對象序列化方法,但無濟於事。
有趣的是,我能夠將字符串[byte []]寫入存儲區並讀取回來,沒有任何問題。所以不要認爲有任何與權限/配置有關的問題。
這發生在localhost以及生產上。
GAE的Java 1.9.17 GCS的AppEngine-GCS-客戶0.4.4.jar 谷歌的API服務存儲-V1-rev26-1.19.1.jar
有誰知道這可能是出錯了?
感謝,阿西
做你'outputChannel.waitForOutstandingWrites()'地方在你的代碼完成後,寫作? – 2015-02-06 07:51:24
嗨伊戈爾,不,我沒有在代碼中的waitForOutstandingWrites()。 – AAP 2015-02-06 08:21:10