У меня есть такой код:
string filePath = Path.Combine(FileSystem.AppDataDirectory, "test.jpg");
if (File.Exists(filePath))
{
Debug.WriteLine("File Exist!");
try
{
File.Delete(filePath);
}
catch (Exception ex) {
Debug.WriteLine("Exception!");
}
}
else
{
Debug.WriteLine("File not exists!");
}
if (File.Exists(filePath))
{
Debug.WriteLine("File not deleted!");
}
// Output:
File Exist!
File not deleted!
Я пишу приложение для Android. Я пытаюсь удалить файл в папке AppDataDirectory, но не могу его удалить. Я также не получаю никаких сообщений об исключениях. Я не могу понять эту ситуацию. (Хотя папка AppDataDirectory не требует разрешения на запись, я добавил необходимые разрешения. Также в приложении Windows такой проблемы не возникает и файл удаляется). Можете ли вы помочь мне с этим вопросом? Спасибо.
EDIT
Я провел глубокое исследование по этому поводу. Я думаю, что это проблема с .Net Maui (.NET 8). (на Андроиде).
Мое альтернативное решение было:
var file = new FileInfo(filePath);
file.Delete();
Таким образом, файл можно удалить и на Android.
Во-первых, Path.Combine
не создаст файл, если он не существует на Android. Поэтому я использовал FileStream
, чтобы создать его.
string filePath = Path.Combine(FileSystem.AppDataDirectory, "test.jpg");
using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
{
}
И потом, File.Delete(filePath)
хорошо работает в моем проекте. Результат моего проекта:
// Output:
File Exist!
И я использовал проводник устройства в Android Studio, чтобы проверить результат: файл будет удален после выполнения File.Delete(filePath)
.
Среда, которую я использовал:
Да, таким образом мне удалось успешно удалить существующий файл. Интересно, что я сталкиваюсь с этой проблемой только на Android. Спасибо!