繁体   English   中英

MAUI应用程序如何从Android外部存储读取文件

[英]How to read files from Android external storage in MAUI application

如何从 MAUI 应用程序中的 android 外部存储文件夹读取/写入所有/特定文件。 我知道在 Xamarin.Android 中有一些本地方法可以做到这一点,但在这里我正在寻找更现代的抽象方法来实现它。 请帮忙。

具体来说,我正在寻找一些抽象/API 来列出 Android 平台上的文件。 像下面这样的东西是理想的或类似的-

var files = Directory.GetFiles(<FolderPath>)

任何指针都会有帮助。 非常感谢。

以.txt 文件为例。

主页.xaml:

...
<VerticalStackLayout>
        <Button Text="File"
                Clicked="file_clicked"/>
        <Button Text="Read_file"
                Clicked="Read_file"/>
</VerticalStackLayout>

在 MainPage.xaml.cs 中,您可以添加:

    
    //string targetFile = System.IO.Path.Combine(FileSystem.Current.AppDataDirectory, "TextFile3.txt");

    // Write the file content to the app data directory
    private async void file_clicked(object sender, EventArgs e)
    {
#if ANDROID
        //var docsDirectory = Android.App.Application.Context.GetExternalFilesDir(Android.OS.Environment.DirectoryDocuments);
        //File.WriteAllText($"{docsDirectory.AbsoluteFile.Path}/atextfile.txt", "contents are here");
        var docsDirectory = Android.App.Application.Context.GetExternalFilesDir(Android.OS.Environment.DirectoryDcim);
        File.WriteAllText($"{docsDirectory.AbsoluteFile.Path}/atextfile.txt", "contents are here");
#endif


       //using FileStream outputStream = System.IO.File.OpenWrite(targetFile);
       //using StreamWriter streamWriter = new StreamWriter(outputStream);
       //await streamWriter.WriteAsync("ssss");
    }

    //read file
    private async void Read_file(object sender, EventArgs e)
    {
#if ANDROID
        var docsDirectory = Android.App.Application.Context.GetExternalFilesDir(Android.OS.Environment.DirectoryDcim);
        var a = File.OpenRead($"{docsDirectory.AbsoluteFile.Path}/atextfile.txt");
        using StreamReader reader_1 = new StreamReader(a);
        var doc = await reader_1.ReadToEndAsync();
        await DisplayAlert("content", doc, "OK");
#endif


       //using FileStream outputStream_2 = System.IO.File.OpenRead(targetFile);
       //using StreamReader reader_2 = new StreamReader(outputStream_2);
       //string content_2 = await reader_2.ReadToEndAsync();
       //content_2 = content_2.ToUpperInvariant();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM