C# 下载和使用文件原因 System.UnauthorizedAccessException
C# Downloading And Using File Causes System.UnauthorizedAccessException
我正在尝试创建一个下载文件然后编辑该文件的应用程序。
我遇到的问题是文件下载后它似乎并没有放弃该文件,我可以将文件下载到其本地存储,我已经从 Iso 手动获取文件并且它很好。如果我在下载文件后使用该应用程序继续,我会收到 System.UnauthorizedAccessException 错误,但如果我关闭并打开该应用程序,然后只编辑保存在 iso 中的文件,它就可以工作,就像我说的,它好像仍在使用下载的文件。
public async void DownloadTrack(Uri SongUri)
{
var httpClient = new HttpClient();
var data = await httpClient.GetByteArrayAsync(SongUri);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Test.mp3", CreationCollisionOption.ReplaceExisting);
var targetStream = await file.OpenAsync(FileAccessMode.ReadWrite);
await targetStream.AsStreamForWrite().WriteAsync(data, 0, data.Length);
await targetStream.FlushAsync();
}
此代码可以很好地下载 mp3,因为我已经测试了下载文件。我看过代码以
结尾的例子
targetStream.Close();
但它没有告诉我,还有其他方法可以关闭下载吗
谢谢。
而不是调用 Close()
或 Dispose()
我真的很喜欢使用 using
自动完成工作。所以你的方法可能是这样的:
public async void DownloadTrack(Uri SongUri)
{
using (HttpClient httpClient = new HttpClient())
{
var data = await httpClient.GetByteArrayAsync(SongUri);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Test.mp3", CreationCollisionOption.ReplaceExisting);
using (var targetStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
await targetStream.AsStreamForWrite().WriteAsync(data, 0, data.Length);
await targetStream.FlushAsync();
}
}
}
我正在尝试创建一个下载文件然后编辑该文件的应用程序。
我遇到的问题是文件下载后它似乎并没有放弃该文件,我可以将文件下载到其本地存储,我已经从 Iso 手动获取文件并且它很好。如果我在下载文件后使用该应用程序继续,我会收到 System.UnauthorizedAccessException 错误,但如果我关闭并打开该应用程序,然后只编辑保存在 iso 中的文件,它就可以工作,就像我说的,它好像仍在使用下载的文件。
public async void DownloadTrack(Uri SongUri)
{
var httpClient = new HttpClient();
var data = await httpClient.GetByteArrayAsync(SongUri);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Test.mp3", CreationCollisionOption.ReplaceExisting);
var targetStream = await file.OpenAsync(FileAccessMode.ReadWrite);
await targetStream.AsStreamForWrite().WriteAsync(data, 0, data.Length);
await targetStream.FlushAsync();
}
此代码可以很好地下载 mp3,因为我已经测试了下载文件。我看过代码以
结尾的例子targetStream.Close();
但它没有告诉我,还有其他方法可以关闭下载吗 谢谢。
而不是调用 Close()
或 Dispose()
我真的很喜欢使用 using
自动完成工作。所以你的方法可能是这样的:
public async void DownloadTrack(Uri SongUri)
{
using (HttpClient httpClient = new HttpClient())
{
var data = await httpClient.GetByteArrayAsync(SongUri);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("Test.mp3", CreationCollisionOption.ReplaceExisting);
using (var targetStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
await targetStream.AsStreamForWrite().WriteAsync(data, 0, data.Length);
await targetStream.FlushAsync();
}
}
}