从streaming路径复制到persistentpath

using UnityEngine;  
using UnityEngine.UI;  
using System.Collections;  
using System.IO;  
using System.Runtime.Serialization.Formatters.Binary;  
  
public class main : MonoBehaviour  
{  
    public string fileName = "img.png";  
  
    public Image img_persistent;  
    public Image img_streaming;  
  
    public Button btn_copy;  
    public Button btn_clear;  
  
    public Button btn_close;  
  
    //public Text txt_info;  
  
    // Use this for initialization  
    void Start()  
    {  
        img_persistent.sprite = null;  
        img_streaming.sprite = null;  
        LoadImage_from_Streaming(fileName, img_streaming);  
  
        btn_copy.onClick.AddListener(() =>  
        {  
            Debug.Log("click btn copy!");  
            if (img_persistent.sprite == null)  
            {  
                StartCoroutine(copy(fileName));  
            }  
        });  
  
        btn_clear.onClick.AddListener(() =>  
        {  
            clear();  
        });  
  
        btn_close.onClick.AddListener(() =>  
        {  
            Application.Quit();  
        });  
    }  
  
    /// <summary>  
    /// 将streaming path 下的文件copy到对应用  
    /// 为什么不直接用io函数拷贝,原因在于streaming目录不支持,  
    /// 不管理是用getStreamingPath_for_www,还是Application.streamingAssetsPath,  
    /// io方法都会说文件不存在  
    /// </summary>  
    /// <param name="fileName"></param>  
    IEnumerator copy(string fileName)  
    {  
        string src = getStreamingPath_for_www() + fileName;  
        string des = Application.persistentDataPath + "/" + fileName;  
        Debug.Log("des:" + des);  
        Debug.Log("src:" + src);  
        WWW www = new WWW(src);  
        yield return www;  
        if (!string.IsNullOrEmpty(www.error))  
        {  
            Debug.Log("www.error:" + www.error);  
        }  
        else  
        {  
            //des = Application.persistentDataPath + "/" + fileName;  
            if (File.Exists(des))  
            {  
                File.Delete(des);  
            }  
            FileStream fsDes = File.Create(des);  
            fsDes.Write(www.bytes, 0, www.bytes.Length);  
            fsDes.Flush();  
            fsDes.Close();  
  
            LoadImage_from_Persistent(fileName, img_persistent);  
        }  
        www.Dispose();  
    }  
  
    void clear()  
    {  
        img_persistent.sprite = null;  
        string des = Application.persistentDataPath + "/" + fileName;  
        if (File.Exists(des))  
        {  
            File.Delete(des);  
        }  
    }  
  
    /// <summary>  
    /// Load Image from Persistent folder  
    /// </summary>  
    /// <param name="path"></param>  
    /// <param name="uiImg"></param>  
    void LoadImage_from_Persistent(string path, UnityEngine.UI.Image uiImg)  
    {  
        path = getPersistentPath_for_www() + path;  
        Debug.Log("persistent path:" + path);  
        StartCoroutine(wwwLoadImage(path, uiImg));  
    }  
  
    /// <summary>  
    /// Load Image from Streaming folder  
    /// </summary>  
    /// <param name="path"></param>  
    /// <param name="uiImg"></param>  
    void LoadImage_from_Streaming(string path, UnityEngine.UI.Image uiImg)  
    {  
        path = getStreamingPath_for_www() + path;  
        Debug.Log("streaming path:" + path);  
        StartCoroutine(wwwLoadImage(path, uiImg));  
    }  
  
    IEnumerator wwwLoadImage(string path, UnityEngine.UI.Image uiImg)  
    {  
        WWW www = new WWW(path);  
        yield return www;  
        if (!string.IsNullOrEmpty(www.error))  
        {  
            Debug.Log("www.error:" + www.error);  
        }  
        uiImg.sprite = Sprite.Create(www.texture, new Rect(new Vector2(0, 0), new Vector2(www.texture.width, www.texture.height)), Vector2.zero);  
        www.Dispose();  
    }  
  
    //void LogToText(string log)  
    //{  
    //    Debug.Log(log);  
    //    txt_info.text += "\n" + log;  
    //}  
  
    string getStreamingPath_for_www()  
    {  
        string pre = "file://";  
#if UNITY_EDITOR  
        pre = "file://";  
#elif UNITY_ANDROID  
        pre = "";  
#elif UNITY_IPHONE  
        pre = "file://";  
#endif  
        string path = pre + Application.streamingAssetsPath + "/";  
        return path;  
    }  
  
    string getPersistentPath_for_www()  
    {  
        string pre = "file://";  
#if UNITY_EDITOR || UNITY_STANDALONE_WIN  
        pre = "file:///";  
#elif UNITY_ANDROID  
        pre = "file://";  
#elif UNITY_IPHONE  
        pre = "file://";  
#endif  
        string path = pre + Application.persistentDataPath + "/";  
        return path;  
    }  
}  

转载于:https://www.cnblogs.com/CasualAttachment/p/7309337.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值