我一直在努力将文件写入内部存储。我想将文件保存到用户可以看到它并读取文件(例如 Mydocuments)的位置,或者通过为我的应用程序创建一个单独的文件夹(如 Whatsapp 那样)将文件保存到内部存储中。我也想在 iOS 中实现同样的场景。
我怎么做?我已经尝试过 Xamarin.Essentials 中的文件系统助手,也使用了 Environment.SpecialFolder 但似乎没有任何效果。我只是想保存一个简单的文本文件。
我试过的链接..
https://learn.microsoft.com/en-us/xamarin/android/platform/files/
注意:我对外部存储不感兴趣。
我对c# 中的async 和await 了解一些。但我看到了如图所示的返回视图的方法。所以我想知道这个方法是如何实现的?
我已经做到了这一点,
public async Task<PartialViewResult> SamplePartialPage()
{
ViewBag.countryList = await db.CountryList.ToListAsync();
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
但不是这个。
public async Task<PartialViewResult> SamplePartialPage()
{
ViewBag.countryList = await db.CountryList.ToListAsync();
return await Task.Run(() => PartialView());
}
Run Code Online (Sandbox Code Playgroud) 我需要在android的共享存储中保存一个文件。我发现了这个链接=> https://developer.android.com/training/data-storage/shared/documents-files
我正在使用依赖项服务,并且能够成功将文件保存到所需位置。但我只能创建一个空白文件。我需要将一些内容写入该文件。实际上,几个小时前我使用 android 标签创建了一个线程,并得到了解决方案,我必须重写 OnActivityResult 方法并获取意图数据。现在我已经完成了,并且能够获取意图数据。但现在我不知道应该从意图中选择哪个路径以及如何使用所选路径打开文件以及如何将内容写入所选文件。任何 android + xamarin 专家应该能够帮助我..
android平台实现写服务的代码:
Activity _activity;
private static int CREATE_FILE = 6835;
public WriteFileService()
{
_activity = CrossCurrentActivity.Current.Activity;
}
void IWriteService.WriteFile(string Content)
{
Intent intent = new Intent(Intent.ActionCreateDocument);
intent.AddCategory(Intent.CategoryOpenable);
intent.SetType("application/txt");
intent.PutExtra(Intent.ExtraTitle, "Invoice.txt");
_activity.StartActivityForResult(intent, CREATE_FILE);
}
Run Code Online (Sandbox Code Playgroud)
重写的OnActivityResultMethod:
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
Toast.MakeText(Application.Context, "requestCode is " + requestCode, ToastLength.Short).Show();
if (requestCode == 6835)
{
if (data != null)
{
Toast.MakeText(Application.Context,
data.GetType().ToString(),
ToastLength.Short).Show();
}
}
base.OnActivityResult(requestCode, resultCode, data);
} …
Run Code Online (Sandbox Code Playgroud)