zoukankan      html  css  js  c++  java
  • 两个常用的工具类(经常使用)

    一.首先创建一个可以进行序列化的类 创建类的时候前面加上[Serializable](需要注意的是想要打出序列化需要引入的命名空间为 using System;)

    二.然后写入一些类的基本属性设置为共有方法

    三.然后写入如下代码就能够很快捷的实现生成XML

     #region XML序列化第一种方法
     //Xml序列化工具
     static string fileName;
     public static void SaveData<T>(T saveData) where T : new()
     {
         Encoding utf8NoBom = new UTF8Encoding(false);
         fileName = Application.dataPath + "/" + saveData.GetType().ToString();
         Stream stream = new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.Write);
         StreamWriter sw = new StreamWriter(stream,utf8NoBom);
         XmlSerializer xmlSerializer = new XmlSerializer(saveData.GetType());
         xmlSerializer.Serialize(sw,saveData);
         sw.Dispose();
         stream.Dispose();
     }
     public static T ReadData<T>() where T : new()
     {
         T data = new T();
         string site = Application.dataPath + "/" + data.GetType().ToString();
         Stream str = new FileStream(site, FileMode.Open, FileAccess.Read, FileShare.None);
         StreamReader reader = new StreamReader(str, true);
         XmlSerializer xml = new XmlSerializer(data.GetType());
         data = (T)xml.Deserialize(reader);
         reader.Close();
         str.Close();
         return data;
     }
     #endregion

    2.实现讲一个电脑上的文件路径打包到手机上也能进行使用

    思路:首先将需要进行移动的文件放入到StreamIngAssets文件夹下,在这个路径下的文件在电脑端能进行读写操作,在手机端只能进行读操作,所以在想要在手机端进行文件的写操作,需要将StreamingAssets中的文件转到沙盒路径下:

    public static void CopyFileFromSAPathTOPDPath(string InSAName,string INPDPName=null,Action InOnCopyFinshedAction=null)
    {
        Assert.IsFalse(string.IsNullOrEmpty(InSAName));
        if (string.IsNullOrEmpty(INPDPName))
        {
            INPDPName = InSAName;
        }
        string streamingAssetPath = Path.Combine(Application.streamingAssetsPath,InSAName);
        string persistentDataPath = Path.Combine(Application.persistentDataPath,INPDPName);
        #if !UNITY_EDITOR && UNITY_ANDROID
                    using (WWW www=new WWW(streamingAssetPath))
                {
                    while (!www.isDone){}
     
                    if (www.isDone&&string.IsNullOrEmpty(www.error))
                    {
                        File.WriteAllBytes(persistentDataPath,www.bytes);
                        if (null!=InOnCopyFinshedAction)
                        {
                            InOnCopyFinshedAction.Invoke();
                        }
                        else
                        {
                            Debug.LogError("下载错误:"+www.error);
                        }
                    }
                }
        #else
                File.Copy(streamingAssetPath,persistentDataPath,true);
                if (null!=InOnCopyFinshedAction)
                {
                    InOnCopyFinshedAction.Invoke()
                }
        #endif
    }

    以上就是两个经常进行使用的工具类,希望能帮助到大家,大家有不懂得或者我错的,欢迎在下方评论区进行评论,大家一起学习,谢谢!!!!!

    文章转自:https://www.cnblogs.com/baosong/p/9563071.html

  • 相关阅读:
    SpringBoot配置Druid数据源
    springboot自定义异常处理
    SpringBoot配置详解
    设计模式 | 模板方法模式(template method)
    设计模式 | 原型模式(prototype)
    设计模式 | 工厂方法模式(factory method)
    设计模式 | 代理模式(proxy)
    设计模式 | 装饰模式(decorator)
    设计模式 | 策略模式(strategy)
    设计模式 | 简单工厂模式(static factory method)
  • 原文地址:https://www.cnblogs.com/baosong/p/9563071.html
Copyright © 2011-2022 走看看