我主要是为Android开发,因此我知道可以使用Android.Content.Context.GetExternalFilesDir
在Xamarin.Forms中访问Android设备的外部存储。
我知道可以使用Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
独立访问内部存储平台,但是对于外部存储也可以这样做吗?
我知道用例可能很有限,因为iOS仍然不允许对文件系统进行任何非越狱访问,但是不必为每个文件系统都实现而写入外部文件系统仍然不是一件好事平台?难道不能只写到根应用程序文件目录并让OS API处理其余部分吗?我很新,所以不要对这个愚蠢的问题笑太多。
非常感谢您的帮助。
Forms不提供访问外部存储的api,我们必须在每个特定平台中实现它,请检查https://docs.microsoft.com/en-us/xamarin/android/platform/files/external-storage?tabs=windows
Android
我的Android项目代码,我使用类似“存储”的类名称,扩展您在Xamarin.Forms项目中创建的接口并使用:
public void SaveFile(string fileName)
{
string path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
string filePath = System.IO.Path.Combine(path, fileName);
if (!System.IO.File.Exists(filePath))
{
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath, true))
{
writer.WriteLine(DateTime.Now.ToString() + ": " + "Example .txt created using Xamarin.");
}
}
else
{
System.IO.File.Delete(filePath);
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath, true))
{
writer.WriteLine(DateTime.Now.ToString() + ": " + "Example .txt created using Xamarin.");
}
}
}
/// <summary>
/// To receive file from Android Phone
/// </summary>
public string ReceiveFile(string fileName)
{
string path = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
string filePath = System.IO.Path.Combine(path, fileName);
return filePath;
}
Xamarin.Forms接口:
public interface IArchivos
{
void SaveFile(string fileName);
string ReceiveFile(string fileName);
}
希望这会有所帮助!