如何使用Xamarin保存文本文件以及文件保存在哪里

时间:2018-11-05 16:16:11

标签: c# visual-studio-2010 xamarin

我是Xamarin的新手。我有一个简单的应用程序;我在具有注释字段并拍照功能的地方。我正在使用媒体插件拍照。图片显然已保存在手机库中。 但我也想保存文本文件,其中包含电话中“便笺”字段的输入。

我正在努力保存文本文件。

是产品结构。我正在使用共享项目。

File structure and classes image

Sample app image

我有一个保存按钮。我要做的是单击“保存”按钮时;保存具有注释字段中用户输入内容的文本文件。

这是我的保存按钮的操作

我正在这个网站上寻找 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/files?tabs=windows

我尝试了一些代码,但没有任何效果。

private async void Take_Photo_Button_Clicked(object sender, EventArgs e)
{
    await CrossMedia.Current.Initialize();
    if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
    {
        await DisplayAlert("No Camera", ":( No camera available.", "OK");
        return;
    }

    var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
    {
        SaveToAlbum = true,
        Name = jobnoentry.Text + "-" + Applicationletterentry + "-" + signnoentry.Text + "-" + SignType,

    });


    if (file == null)
        return;

    MainImage.Source = ImageSource.FromStream(() =>
    {
        var stream = file.GetStream();
        return stream;
    });


    //Save text field 

    string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "temp.txt");
    File.WriteAllText(fileName, "Hello World");


}

1 个答案:

答案 0 :(得分:1)

首先,确切保存文件的位置取决于平台,但是您始终可以打印文件名的字符串以查看实际路径,例如

string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "temp.txt");
Console.WriteLine(filename); // will write the actual path to the application output.

在任何情况下,您正在使用的路径Environment.SpecialFolder.LocalApplicationData都会将文本文件保存到只能由应用程序本身访问的位置,您不会在文件浏览器中看到它。如果您需要使文本文件在您的应用程序外部可用,该操作会因平台而异,并且需要使用依赖项服务来获取正确的文件路径。

但是,您可以验证是否已保存并可以按以下方式读取文件:

string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "temp.txt");
File.WriteAllText(fileName, "Hello World");

以上是您帖子中的代码。如果您没有例外,那么很有可能会奏效。要验证:

var text = File.ReadAllText(filename);
if (text == "Hello World")
    Console.WriteLine("File contents verified and correct");
else
    Console.WriteLine("File contents do not match saved string");