Удаление файла не работает на .NET MAUI (для платформы Android)

У меня есть такой код:

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.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, 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).

Среда, которую я использовал:

  • Visual Studio 17.11.0 Предварительная версия 2.1
  • .Net 8.0
  • Протестируйте как эмулятор Android 10, так и физическое устройство XiaoMi с Android 14.0.

Да, таким образом мне удалось успешно удалить существующий файл. Интересно, что я сталкиваюсь с этой проблемой только на Android. Спасибо!

modab 06.08.2024 11:14

Другие вопросы по теме

Похожие вопросы

Невозможно получить доступ к наблюдаемому свойству в модели представления из соответствующего файла .xaml представления — .NET MAUI MVVM
Как обеспечить автоматическое масштабирование для CollectionView в объекте Popup из CommunityToolkit.Maui после его заполнения с помощью события нажатия кнопки на платформе Windows?
Редактор .NET Maui в ListView не принимает ввод
Отключить анимацию загрузки ViewCell при длительном нажатии на Android .Net Maui
Как исправить проблему, связанную с тем, что ключ знака кода не найден в конвейере Azure в MAUI .net 8.0-iOS?
Почему средство выбора в CollectionView устанавливает для привязки SelectedItem значение null?
Как я могу выполнить произвольный код с помощью командной кнопки appShell (вместо отображения представления)?
Цвета MAUI из ресурсов
Как реализовать TextChanged в CommunityToolkit MVVM-способе
Как повторно инициализировать одноэлементные страницы и модели представления при выходе пользователя из системы и входе в приложение оболочки MAUI?