我一直试图直接从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