- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 VS2012、WinRT 和 C# 中工作。
我试图在解压后删除一些文件。我收到“访问被拒绝”错误。如果我停止该应用程序并重新启动它,相同的代码可以正常工作,所以看起来仍然有一个 handle 。
如果我不调用 unZipFile 方法,我可以删除文件。
是否有明确的方式来发布文件?在调用 delete 之前,我已将其设置为 null (file = null;)。
这是调用解压缩方法的代码块:
StorageFile file = await CreateOutputFile(fileName, path);
MemoryStream theMemStream = new MemoryStream();
theMemStream.Write(bytes, 0, bytes.Length);
await FileIO.WriteBytesAsync(file, bytes);
await theMemStream.FlushAsync();
theMemStream.Dispose();
var result = await unZipFile(file, path);
file = null;
这是 unZipFile 方法:
private async Task<string> unZipFile(StorageFile file, string path)
{
StorageFolder sf = await GetOutputFolder(path);
using (var zipStream = await file.OpenStreamForReadAsync())
{
using (MemoryStream zipMemoryStream = new MemoryStream((int)zipStream.Length))
{
await zipStream.CopyToAsync(zipMemoryStream);
try
{
var archive = SharpCompress.Archive.ArchiveFactory.Open(file.Path);
foreach (var entry in archive.Entries)
{
entry.WriteTo(zipMemoryStream);
Stream fileData = entry.OpenEntryStream();
StorageFile outputFile = await sf.CreateFileAsync(entry.FilePath, CreationCollisionOption.ReplaceExisting);
using (Stream outputFileStream = await outputFile.OpenStreamForWriteAsync())
{
await fileData.CopyToAsync(outputFileStream);
await outputFileStream.FlushAsync();
outputFileStream.Dispose();
}
}
archive = null;
}
catch (Exception ex)
{
throw new IOException("Error writing decompressed output file: " + ex.Message);
}
await zipStream.FlushAsync();
zipStream.Dispose();
await zipMemoryStream.FlushAsync();
zipMemoryStream.Dispose();
}
}
return "success";
}
这是删除方法。解压后为每个文件调用:
private async Task<string> deleteFile(string path, string filename)
{
StorageFolder folder = await GetOutputFolder(path);
var files = await folder.GetFilesAsync();
foreach (StorageFile file in files)
{
try
{
if (file != null)
{
if (file.Name == filename)
await file.DeleteAsync();
}
}
catch (Exception ex)
{
return ex.Message;
}
}
return "success";
}
最佳答案
在什么文件上出现异常,是提取的文件还是 zip 存档本身?
如果是后者,ArchiveFactory.Open()
返回一个继承IDisposable
的IArchive
,所以你应该包装 var archive = SharpCompress.Archive.ArchiveFactory.Open(file.Path);
在 using
block 中,以便在使用后处理。
关于c# - 无法使用 DeleteAsync 删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13310933/
我正在尝试通过 webapi 后面的 aspnetcore.identity UserManager 删除用户。 [HttpPost("Delete", Name = "DeleteRoute
我有以下代码。 C# 代码位于设备上,Windows Phone 8: IMobileServiceTable SubsciptionsTable = App.MobileService.GetTab
我在从我的 Xamarin Android 应用程序的 Firebase 数据库中删除项目时遇到问题。 我收到 400(错误请求)错误 删除方法: private async void RemoveP
我在 VS2012、WinRT 和 C# 中工作。 我试图在解压后删除一些文件。我收到“访问被拒绝”错误。如果我停止该应用程序并重新启动它,相同的代码可以正常工作,所以看起来仍然有一个 handle
我正在尝试为 HttpClient.DeleteAsync 请求设置自定义 header 。我试过使用 httpClient.DefaultRequestHeaders.Add("X-Parse-Ap
我正在检查我的数据文件夹中的所有文件,但没有一个被删除。我不确定,但我认为我做错了什么,但我不知道它是什么: private async void pageRoot_Unloaded(object s
我有一个 ASP.NET MVC 5 网站 - 在 C# 客户端代码中,我使用 HttpClient.PutAsJsonAsync(path, myObject) 可以很好地调用 Json API(该
为什么 IAsyncDocumentSession 中没有 DeleteAsync() 方法 - RavenDB 的 C# 客户端的一部分。我希望所有操作都具有异步等效项,而不仅仅是 StoreAsy
我刚刚注意到 EF(此处使用版本 5)不提供 DeleteAsync()/AddAsync()。我还注意到像这样的项目: https://github.com/zzzprojects/EntityFr
当我在 HttpClient (System.Net.Http) 中使用 DeleteAsync 函数并使用 Content 检索内容时。 ReadAsStringAsync() 我总是返回 null
我在我的项目中使用以下库:https://github.com/praeclarum/sqlite-net 我查看了文档,但找不到使用 WHERE 子句执行 UpdateAsync 或 DeleteA
我是一名优秀的程序员,十分优秀!