- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试删除使用 FileService 存储的文件。在少数情况下,删除会成功,但在大多数情况下不会成功,而且我还没有找到模式。我在本地服务器上的 Windows 7 上使用 Eclipse。我怎样才能删除该文件?
编辑:当我上传到应用程序引擎时它会起作用。
这是存储代码:
try
{
FileService fileService = FileServiceFactory.getFileService();
AppEngineFile file = fileService.createNewBlobFile(content_type, fileName);
boolean lock = true;
FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
byte[] b1 = new byte[BUFFER_SIZE];
int readBytes1;
while ((readBytes1 = is.read(b1)) != -1)
{
writeChannel.write(ByteBuffer.wrap(b1, 0, readBytes1));
}
writeChannel.closeFinally();
blobKey = fileService.getBlobKey(file);
item_image_blob_key = blobKey.getKeyString();
}
catch (Exception e)
{
System.out.println(e.getLocalizedMessage());
e.printStackTrace(response.getWriter());
}
这是删除尝试:
@Override
public long deleteItem(Long id)
{
System.out.println(LOG +" Trying to delete item with this id: " + id);
Key parent = KeyFactory.createKey("MffItems", MFF_ITEM_ROOT_KEY);
Key key = KeyFactory.createKey(parent, "Item", id);
try
{
Entity e = datastore.get(key);
String image_key = (String) e.getProperty("image_blob_key");
BlobKey blobKey = new BlobKey(image_key);
final AppEngineFile f = fileService.getBlobFile(blobKey);
if(f.isReadable())
{
System.out.println(LOG + " file is readable");
if(f.hasFinalizedName())
{
System.out.println(LOG + " file has finalized name: " + f.getNamePart());
fileService.delete(f); // Problematic line
datastore.delete(key);
return id;
}
}
}
catch(Exception e)
{
System.out.println(LOG + " " + e.toString() + " " + e.getMessage());
}
// TODO Auto-generated method stub
return -1;
}
这是我收到的错误:
I_MFF_ItemService Trying to delete item with this id: 2 I_MFF_ItemService file is readable I_MFF_ItemService file has finalized name: TXP5bVCmBVugDOxktBGv_w Jun 30, 2013 12:24:03 PM com.google.appengine.api.blobstore.dev.LocalBlobstoreService$1 run WARNING: Could not delete blob: java.io.IOException: Could not delete: C:\Users\Gideon\Desktop\dev\workspace2\ItemManager1.41\war\WEB-INF\appengine-generated\TXP5bVCmBVugDOxktBGv_w at com.google.appengine.api.blobstore.dev.FileBlobStorage.deleteBlob(FileBlobStorage.java:79) at com.google.appengine.api.blobstore.dev.LocalBlobstoreService$1.run(LocalBlobstoreService.java:153) at java.security.AccessController.doPrivileged(Native Method) at com.google.appengine.api.blobstore.dev.LocalBlobstoreService.deleteBlob(LocalBlobstoreService.java:146) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.callInternal(ApiProxyLocalImpl.java:521) at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:475) at com.google.appengine.tools.development.ApiProxyLocalImpl$AsyncApiCall.call(ApiProxyLocalImpl.java:452) at java.util.concurrent.Executors$PrivilegedCallable$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.util.concurrent.Executors$PrivilegedCallable.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
I_MFF_ItemService java.io.IOException: Blobstore failure Blobstore failure Jun 30, 2013 12:24:27 PM com.google.appengine.api.datastore.dev.LocalDatastoreService$PersistDatastore persist INFO: Time to persist datastore: 20 ms
最佳答案
这是开发服务器的一个已知错误,由文件被锁定在文件系统中引起。请参阅this logged issue .
停止/重新启动开发服务器是一种解决方法。
关于java - 在Google应用程序引擎中如何删除最初使用FileService存储的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17388958/
在开发服务器上,我尝试使用 FileService api 将数据写入单个文件。 即使我写入少量数据,关闭文件(使用 close())也不会释放内存。我需要使用 FileService 中的 clos
变量 boolean 值lock在FileService.html#openReadChannel中意味着什么? 当我尝试使用 false 时,我得到了非法状态异常,而当使用 true 时,我没有得到
我正在尝试使用此处指定的 REST API(创建文件)文档将图像上传到 Azure 中的文件服务:https://learn.microsoft.com/en-us/rest/api/storages
它已经工作了好几个星期,今天中午也工作得很好,然后(没有任何部署/更改)它突然开始 100% 失败。对于昨天有效但在开发中仍然正常工作的相同 URL,它在生产中失败了。 我认为这是某种服务中断,但 A
我正在使用 FileService Api 将文件从服务器端保存到 Blobstore,如下所示: FileService fileService = FileServiceFactory.g
我是一名优秀的程序员,十分优秀!