Unity文件操作 Bug File.Move File.Copy 在不同的系统上获得文件权限不一致

/************************************************
 * 创建人:陈鹏
 * 创建日期:20170507
 * Blog: http://www.liveslives.com
 * ************************************************/

游戏在测试过程中出现了Bug。在部分机型模拟器上,文件不能读取,提示没有权限。

Exception
UnauthorizedAccessException: Access to the path "/data/data/com.tencent.tmgp.liveslives/files/Assembly-CSharp.dll" is denied.
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options)
System.IO.FileStream..ctor (System.String path, FileMode mode)
UI_UpdateAssetbundle+c__Iterator27.MoveNext ()
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)



我这里是海马玩模拟器,Android4.2.2系统。出现问题。


在我自己的手机上没有出现问题,手机是Android4.4系统。

在魅蓝系列没有问题。

在红米3没有问题。

在网易Mumu模拟器上也没有问题。

在夜神模拟器上没有问题,Android4.4.2系统。


初步估计,低于Android4.4.2系统的手机会有问题。




纠结了一下午,这个DLL文件下载成功了,但是到了Unity中去读取,就出现了问题。


仔细过了一遍代码才发觉,读取的DLL文件和下载的DLL文件并不是同一个。

当文件下载完毕之后,会从SD卡中 通过

File.Move


移动到 /data/data/com.tencent.tmgp.liveslives/files/Assembly-CSharp.dll .然后再读取这个 dl 。

转自http://blog.csdn.net/huutu http://www.liveslives.com

在文件管理器中查看发现,文件移动后,文件权限变动了。


刚下载的Dll文件,权限如下:



DLL被移动到新的目录后,权限变了。


同样,我也尝试了

File.Copy

也是同样的结果。

转自http://blog.csdn.net/huutu http://www.liveslives.com

然后我再尝试了新建一个文件,然后写入内容,这样创建的文件,就有正确的权限。

byte[] tmpBytes = File.ReadAllBytes(tmpFilePath);
File.WriteAllBytes(tmpFileRealPath, tmpBytes);


这样,文件才能被正确读取。


FileStream是没有问题的。

你可能感兴趣的:(Unity)