2011-09-06 93 views
2

我一直试图直接从BlobStore写入和读取文件,但它不起作用。 问题是我打开像file = fileService.getBlobFile(blobKey);这样的文件,它不会抛出任何异常,但是在下一行我调用readChannel = fileService.openReadChannel(file, false);,并且抛出FileNotFoundException异常。无法从BlobStore读取文件

我很困惑,为什么第一行没有抛出异常。

Here is the same issue

遗憾的是没有一个人回答了这个问题。

回答

1

我在写入或删除时没有任何问题,但是当使用openReadChannel(...)AppEngineFile时,我也得到FileNotFoundException

我试过使用从其构造函数创建的AppEngineFile采取完整的路径。我试过使用从getBlobFile(...)获得的AppEngineFile,就像你上面做的那样。无论哪种方式,当AppEngineFile传递给openReadChannel(...)时,将引发FileNotFoundException

我的解决方法是让BlobstoreService.serve(...)完成所有读取和发送文件的工作。我怀疑使用FileServiceAppEngineFile读取不支持(我使用1.6.0),所以读取必须通过BlobstoreServiceserve(...),fetchData(...),BlobstoreInputStream)完成。

+0

我认为这是Blob商店意图使用的方式。我们用来存储我们需要处理的大数据文件,所以我真的需要处理文件。如果你所需要的只是提供文件,那么这是正确的方法。我们最终完全放弃了这个项目的谷歌应用程序的事情,但它会很高兴知道为什么上面的代码不起作用。不管怎么说,还是要谢谢你。 – Ernesto