我一直試圖直接從BlobStore寫入和讀取文件,但它不起作用。 問題是我打開像file = fileService.getBlobFile(blobKey);
這樣的文件,它不會拋出任何異常,但是在下一行我調用readChannel = fileService.openReadChannel(file, false);
,並且拋出FileNotFoundException異常。無法從BlobStore讀取文件
我很困惑,爲什麼第一行沒有拋出異常。
遺憾的是沒有一個人回答了這個問題。
我一直試圖直接從BlobStore寫入和讀取文件,但它不起作用。 問題是我打開像file = fileService.getBlobFile(blobKey);
這樣的文件,它不會拋出任何異常,但是在下一行我調用readChannel = fileService.openReadChannel(file, false);
,並且拋出FileNotFoundException異常。無法從BlobStore讀取文件
我很困惑,爲什麼第一行沒有拋出異常。
遺憾的是沒有一個人回答了這個問題。
我在寫入或刪除時沒有任何問題,但是當使用openReadChannel(...)
和AppEngineFile
時,我也得到FileNotFoundException
。
我試過使用從其構造函數創建的AppEngineFile
採取完整的路徑。我試過使用從getBlobFile(...)
獲得的AppEngineFile
,就像你上面做的那樣。無論哪種方式,當AppEngineFile
傳遞給openReadChannel(...)
時,將引發FileNotFoundException
。
我的解決方法是讓BlobstoreService.serve(...)
完成所有讀取和發送文件的工作。我懷疑使用FileService
從AppEngineFile
讀取不支持(我使用1.6.0),所以讀取必須通過BlobstoreService
(serve(...)
,fetchData(...)
,BlobstoreInputStream
)完成。
我認爲這是Blob商店意圖使用的方式。我們用來存儲我們需要處理的大數據文件,所以我真的需要處理文件。如果你所需要的只是提供文件,那麼這是正確的方法。我們最終完全放棄了這個項目的谷歌應用程序的事情,但它會很高興知道爲什麼上面的代碼不起作用。不管怎麼說,還是要謝謝你。 – Ernesto