WP7: удалить IsolatedStorageFile
Я был бы очень признателен за помощь в удалении файла из IsolatedStorage в WP7. Я в основном загружаю файл из Интернета, сохраняю его в изолированном хранилище, а затем загружаю в папку "Загрузки" в моем Dropbox. После того, как я его загрузил, я хотел бы удалить файл из изолированного хранилища, но при попытке сделать это я получаю ошибки исключения.
Вот мой код:
public void readCompleteCallback(Object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
try
{
//string fileName = txtUrl.Text.Substring(txtUrl.Text.LastIndexOf("/") + 1).Trim();
string fileName = searchBox.Text + fileExt;
//string fileName = "DownloadedNZB.nzb";
bool isSpaceAvailable = IsSpaceIsAvailable(e.Result.Length);
if (isSpaceAvailable)
{
// Save mp3 to Isolated Storage
using (var isfs = new IsolatedStorageFileStream(fileName,
FileMode.CreateNew,
IsolatedStorageFile.GetUserStoreForApplication()))
{
long fileLen = e.Result.Length;
byte[] b = new byte[fileLen];
var numberOfBytesRead = e.Result.Read(b, 0, b.Length);
isfs.Write(b, 0, numberOfBytesRead);
isfs.Flush();
isfs.Close();
isf = IsolatedStorageFile.GetUserStoreForApplication();
stream = isf.OpenFile(fileName, FileMode.Open);
MessageBox.Show("File downloaded successfully");
App.GlobalClient.UploadFileAsync("/Public/", fileName, stream, (response) =>
{
MessageBox.Show("Uploaded file to Dropbox OK.");
},
(error) =>
{
MessageBox.Show(error + "Cannot upload file to dropbox.");
});
}
//stream.Close();
isf.DeleteFile(searchBox.Text + fileExt);
}
else
{
MessageBox.Show("Not enough to space available to download the file");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
MessageBox.Show(e.Error.Message);
}
}
Я не могу думать, где я иду не так, но если бы кто-то мог указать мне правильное направление, я был бы признателен.
1 ответ
Решение
Вы пытаетесь удалить файл внутри, используя оператор, где файл еще не закрыт
UPD: ваша загрузка асинхронная, поэтому вы можете удалить файл только после его завершения. Поместите свой код рядом с MessageBox.Show("Загруженный файл в Dropbox OK.");