c# - C#:在 Android 上复制资产
问题描述
我尝试使用 Xamarin 开发 Android 应用程序。我构建了 APK,但无法访问保存一些文件夹和文件的资产。我需要将这些文件夹和文件从 Assets 复制到 Android 设备的应用程序目录中,并且可以随时访问它们。
请帮助(我需要一个简单的 CSharp 功能,将 Assets 文件复制到 android 设备。我将感谢任何支持。
解决方案
您可以先查看 使用 Xamarin.Android和使用 Android 资产的文件存储和访问。
这是一个简单的示例:
public static async Task CopyFile(Activity activity)
{
var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "YOUR_FILENAME");
if (!File.Exists(filePath))
{
try
{
using (var fileAssetsStream = activity.Assets.Open("YOUR_FILENAME"))
using (var fileStream = new FileStream(filePath, FileMode.OpenOrCreate))
{
var buffer = new byte[1024];
int b = buffer.Length;
int length;
while ((length = await fileAssetsStream.ReadAsync(buffer, 0, b)) > 0)
{
await fileStream.WriteAsync(buffer, 0, length);
}
}
}
catch (Exception ex)
{
//Handle exceptions
}
}
}
不要忘记请求WRITE_EXTERNAL_STORAGE
运行时权限。
推荐阅读
- c++ - 编写一个函数,通过判断每个参数的类型自动确定返回值
- javascript - How to get java code - String.getBytes("UTF-8"); similar output in javascript
- git - 忽略文件夹中的 Git 命令 - 它真的可以忽略它在 git repo 中吗?
- php - 在 functions.php 文件中找到的这个 md5( $_GET['path'] ) == '34d1f91fb2e514b8576fab1a75a89a6b' 是什么意思?
- linux - 嵌套在另一个 VM 中的 VM。有没有办法在顶级 VM 中检索嵌套 VM 的内核?
- github - Github 文件夹结构或布局问题
- pandas - 如何创建具有不同时期索引的数据框
- mysql - 如何设计数据库中的业务、分支和服务表?
- reactjs - React TypeScript 16.8 使用 BrowserRouter 传递道具
- java - 矩阵“层”旋转