发布安卓后流路径下文件无法读取

 

1 读取字节流 FileStream     安卓平台下不能用

 /// 
    /// 读取本地文件到byte数组
    /// 
    /// 
    /// 
    public byte[] GetBuffer(string path)
    {
        byte[] buffer = null;

        using (FileStream fs = new FileStream(path, FileMode.Open))
        {
            buffer = new byte[fs.Length];
            fs.Read(buffer, 0, buffer.Length);
        }
        return buffer;
    }

2 编辑器模式下   File 类 文件拷贝 安卓平台下不能用

/// 
    /// 拷贝文件夹
    /// 
    /// 
    /// 
    public static void CopyDirectory(string sourceDirName, string destDirName)
    {
        try
        {
            if (!Directory.Exists(destDirName))
            {
                Directory.CreateDirectory(destDirName);
                File.SetAttributes(destDirName, File.GetAttributes(sourceDirName));

            }

            if (destDirName[destDirName.Length - 1] != Path.DirectorySeparatorChar)
                destDirName = destDirName + Path.DirectorySeparatorChar;

            string[] files = Directory.GetFiles(sourceDirName);
            foreach (string file in files)
            {
                if (File.Exists(destDirName + Path.GetFileName(file)))
                    continue;
                FileInfo fileInfo = new FileInfo(file);
                if (fileInfo.Extension.Equals(".meta", StringComparison.CurrentCultureIgnoreCase))
                    continue;

                File.Copy(file, destDirName + Path.GetFileName(file), true);
                File.SetAttributes(destDirName + Path.GetFileName(file), FileAttributes.Normal);
            }

            string[] dirs = Directory.GetDirectories(sourceDirName);
            foreach (string dir in dirs)
            {
                CopyDirectory(dir, destDirName + Path.GetFileName(dir));
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion
}

2 使用  WWW 方式读取    发布安卓后可用

   

   using (WWW www = new WWW(fileUrl)) 
        {
            yield return www;
            if (www.error == null)
            {
                if (onReadStreamingAssetOver != null)
                {
                    onReadStreamingAssetOver(Encoding.UTF8.GetString(www.bytes));
                }
            }
            else
            {
                onReadStreamingAssetOver("");
            }

 

string  s = Application.streamingAssetsPath + "/s/ss.txt";

         string filePath = Application.persistentDataPath + "/s";

        if (!File.Exists(filePath+ "/ss.txt"))

        {

            using (WWW www = new WWW(s))

            {

                yield return www;

                if (!string.IsNullOrEmpty(www.error))

                {

                    Debug.Log(www.error);

                }

                else

                {

                    if (!Directory.Exists(filePath))

                    {

                        //创建文件夹

                        Directory.CreateDirectory(filePath);

                    }

                    File.WriteAllBytes(filePath+ "/ss.txt", www.bytes);

                }

            }

        }

   总结无法File类, FileSream 无法u读取出字节流,但可以使用这些类创建文件,Directory 类创建文件夹,WWW读取出字节流再写入数据。

你可能感兴趣的:(Unity,C#)