Unity发布安卓无法读取StreamingAssets文件下数据库的问题

在移动端StreamingAssets下的文件是只读的,但大家可能跟我一样遇到了发布安卓以后放在StreamingAssets下的数据库文件一样读取不了,

但其实这个文件夹其实是可以读取到的,所以我们需要使用XML来读取文件,然后转存到persistentDataPath目录下,下面是代码:

1 public static class Config
2 {
3     public static string filepath = Application.persistentDataPath + "/TowerDefenseDB.sqlite3";
4     public static string DbConnectionString = "URI=file:" + filepath;  
5 }
 1  if (!File.Exists(Config.filepath))
 2             {
 3                 //如果数据库文件没有被创建,则创建数据库文件.
 4                 WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/" + "TowerDefenseDB.sqlite3");
 5                 while (!loadDB.isDone)
 6                 {
 7                 }
 8                 File.WriteAllBytes(Config.filepath, loadDB.bytes);
 9             } 
10             conn = new SqliteConnection(Config.DbConnectionString);

下面是数据库的正常操作代码,我这里就不多写了

转载于:https://www.cnblogs.com/zhenlong/p/4887263.html

Unity中,当你想要在打包后的APK文件读取StreamingAssets文件夹内的资源时,可以使用以下方法: 首先,你需要将需要访问的文件放在Unity项目的Assets/StreamingAssets目录下。当你构建应用时,StreamingAssets文件夹中的内容会被复制到输出目录中(例如Android的StreamingAssets文件夹会被复制到APK文件assets目录下)。 然后,在你的代码中,你可以使用以下方式来访问这些文件: ```csharp // 获取StreamingAssets文件夹的路径 string streamingAssetsPath = Application.streamingAssetsPath; // 例如,如果你有一个名为 "data.txt" 的文件StreamingAssets文件夹中,你可以使用以下代码来读取它 string filePath = Path.Combine(streamingAssetsPath, "data.txt"); // 使用WWW类来读取文件内容(这是异步操作) WWW www = new WWW(filePath); yield return www; // 确保文件加载成功并且没有错误 if (string.IsNullOrEmpty(www.error)) { string fileContents = www.text; // 这里可以使用fileContents变量来做你需要的事情 } else { // 错误处理 Debug.LogError("Error loading file: " + www.error); } ``` 请注意,这个方法只适用于文本文件。如果你需要读取二进制文件,你需要使用`www.bytes`而不是`www.text`。 此外,如果你的APK已经被安装在了设备上,直接访问StreamingAssets文件夹可能会有权限问题。在这种情况下,你可能需要将文件复制到设备的内部存储中,然后再进行访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值