如何在xamarin表单中动态保存文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在xamarin表单中动态保存文件相关的知识,希望对你有一定的参考价值。

我想以xamarin形式动态保存文件,并在按钮单击中将该文件中包含的数据转换为json对象。如何才能这样做

这是我创建文件并将内容写入该文件的代码

  public void CreateFile(LayerClass _data)
    {
        string _fileName = _path + _data.FileName;

        try
        {
            if (!File.Exists(_fileName))
            {
                File.Create(_fileName);

                DownLoadData(_data);

                WriteLayer();
            }
        }
        catch (Exception Ex)
        {
            Console.WriteLine(Ex.ToString());
        }

    }

    public async void DownLoadData(LayerClass _data)
    {
        await App.DataManager.RunAsync(_data.URL);
    }

    public void WriteLayer()
    {
        if (string.IsNullOrEmpty(App._response))
        {
            try
            {
                using (StreamWriter sw = new StreamWriter(System.IO.Path.Combine(_path, _file), false))
                {
                    sw.WriteLine(App._response);
                    sw.Close();
                }
            }
            catch (Exception ex)
            {

            }
        }
    }

当我点击按钮时我想执行这些代码

DependencyService.Get<IHelpers>().ConvertObj(_temp.FileName);


 async Task LoadData(string file)
    {
        GeoJSONData JsonData;
        try
        {
            Assembly _assembly = typeof(Helpers).GetTypeInfo().Assembly;

            Stream _stream = _assembly.GetManifestResourceStream(file);

            if (_stream != null)
            {
                using (StreamReader _reader = new StreamReader(_stream))
                {
                    var _json = _reader.ReadToEnd();

                    JsonData = JsonConvert.DeserializeObject<GeoJSONData>(_json);
                }
            }
        }
        catch (Exception ex)
        {
            string _msg = ex.Message;
        }
    }

    public void ConvertObj(string file)
    {
        string _fullName = _path + file;
        if(File.Exists(_fullName))
        {
            LoadData(_fullName);
        }
    }

但是我在_stream中得到了null值。我怎么能这样做。

答案
        var json = JsonConvert.SerializeObject(YouObj);

        /*
        optionel : you can use formatting and settings if you wish 
        var settings = new JsonSerializerSettings();
        settings.Converters.Add(new IsoDateTimeConverter
        {
            DateTimeFormat = "yyyy-MM-dd" //for example 
        });
        var json = JsonConvert.SerializeObject(YouObj, Formatting.Indented, settings);
        */


        var fileName = Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "test.json");

        try
        {
            if (!File.Exists(fileName))
            {
                using (File.Create(fileName)) { }
            }

            using (var fs = File.OpenWrite(fileName))
            {
                var data = new UTF8Encoding(true).GetBytes(json);
                fs.Write(data, 0, data.Length);
            }
        }
        catch (Exception e)
        {
            //TODO: exception
        }

以上是关于如何在xamarin表单中动态保存文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin 表单和 C# 将 Html 数据从网站保存到文本文件

如何将 Forms.Image 中的最终照片保存到 xamarin 表单中的本地

Xamarin 表单 - 侧边菜单左侧栏、片段和列表视图

在 xamarin 表单中保存和恢复应用程序状态

Xamarin表单ViewCell Xaml片段

在 xamarin 表单上动态绑定图像源