wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/Common/FileUtlis.cs
@@ -1,11 +1,12 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using HDL_ON.Entity;
namespace HDL_ON.Common
{
    public  class FileUtlis
    public class FileUtlis
    {
        static Common.FileUtlis _temp;
        public static Common.FileUtlis Files
@@ -25,12 +26,13 @@
        string RootPath = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + "/";
        string accountPath;
        string AccountPath {
        string AccountPath
        {
            get
            {
                if (string.IsNullOrEmpty(accountPath) || !accountPath.Contains(UserInfo.Current.ID))
                {
                    accountPath = Path.Combine(RootPath, UserInfo.Current.CurReginID);
                    accountPath = Path.Combine(RootPath, UserInfo.Current.ID);
                    if (!Directory.Exists(accountPath))
                    {
                        Directory.CreateDirectory(accountPath);
@@ -47,9 +49,13 @@
        {
            get
            {
                if (string.IsNullOrEmpty(regionPath) || !regionPath.Contains(UserInfo.Current.CurReginID ))
                if (DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.id == null)
                {
                    regionPath = Path.Combine(AccountPath, UserInfo.Current.CurReginID);
                    return AccountPath;
                }
                if (string.IsNullOrEmpty(regionPath) || !regionPath.Contains(DB_ResidenceData.Instance.CurrentRegion.id))
                {
                    regionPath = Path.Combine(AccountPath, DB_ResidenceData.Instance.CurrentRegion.id);
                    if (!Directory.Exists(regionPath))
                    {
                        Directory.CreateDirectory(regionPath);
@@ -59,7 +65,7 @@
            }
        }
        //public List<>
        /// <summary>
@@ -119,7 +125,7 @@
                fs = new FileStream(Path.Combine(RegionPath, fileName), FileMode.Create, FileAccess.Write);
                fs.Write(bytes, 0, bytes.Length);
                fs.Flush();
                MainPage.Log("SaveFile:" + fileName);
                MainPage.Log($"SaveFile:{fileName}");//Path:{RegionPath}
                return true;
            }
            catch (Exception ex)
@@ -142,91 +148,6 @@
                }
            }
        }
        /// <summary>
        /// 读取userInfo文件
        /// </summary>
        /// <returns></returns>
        public byte[] ReadUserInfo()
        {
            var fileName = "UserInfo_File";
            FileStream fs = null;
            try
            {
                if (File.Exists(Path.Combine(RootPath, fileName)))
                {
                    fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Open, FileAccess.Read);
                }
                else if (File.Exists(fileName))
                {
                    fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                }
                else
                {
                    return new byte[0];
                }
                byte[] bytes = new byte[fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                return bytes;
            }
            catch
            {
                return new byte[0];
            }
            finally
            {
                try
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
                catch
                {
                }
            }
        }
        /// <summary>
        /// 保存userInfo
        /// </summary>
        /// <param name="bytes"></param>
        /// <returns></returns>
        public  bool WirteUserinfo(byte[] bytes)
        {
            var fileName = "UserInfo_File";
            FileStream fs = null;
            try
            {
                fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write);
                fs.Write(bytes, 0, bytes.Length);
                fs.Flush();
                MainPage.Log("SaveFile:" + fileName);
                return true;
            }
            catch (Exception ex)
            {
                MainPage.Log("FileUtiles Code 113:" + ex.ToString());
                return false;
            }
            finally
            {
                try
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log("FileUtils Code 121 :" + ex.ToString());
                }
            }
        }
        /// <summary>
        /// 读取userInfo文件
        /// </summary>
@@ -237,9 +158,9 @@
            FileStream fs = null;
            try
            {
                if (File.Exists(Path.Combine(AccountPath, fileName)))
                if (File.Exists(Path.Combine(RootPath, fileName)))
                {
                    fs = new FileStream(Path.Combine(AccountPath, fileName), FileMode.Open, FileAccess.Read);
                    fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Open, FileAccess.Read);
                }
                else if (File.Exists(fileName))
                {
@@ -285,7 +206,7 @@
            try
            {
                fs = new FileStream(Path.Combine(AccountPath, fileName), FileMode.Create, FileAccess.Write);
                fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write);
                fs.Write(bytes, 0, bytes.Length);
                fs.Flush();
                MainPage.Log("SaveFile:" + fileName);
@@ -311,8 +232,6 @@
                }
            }
        }
        public byte[] ReadFile(string fileName)
        {
@@ -354,5 +273,123 @@
                }
            }
        }
        // 读取指定路径文件内容
        public byte[] ReadFileForPath(string path)
        {
            FileStream fs = null;
            try
            {
                if (File.Exists(path))
                {
                    fs = new FileStream(path, FileMode.Open, FileAccess.Read);
                }
                else
                {
                    return new byte[0];
                }
                byte[] bytes = new byte[fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                return bytes;
            }
            catch
            {
                return new byte[0];
            }
            finally
            {
                try
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
                catch
                {
                }
            }
        }
        /// <summary>
        /// 下载网络图片
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="url"></param>
        public void DownLoadImage(string fileName, string url, Action action)
        {
            if (!File.Exists(fileName))
            {
                System.Threading.Tasks.Task.Run(() =>
                {
                    FileStream fs = null;
                    try
                    {
                        MyWebClient webClient = new MyWebClient();
                        byte[] recevieBytes = webClient.DownloadData(new Uri(url));
                        fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write);
                        //fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
                        fs.Write(recevieBytes, 0, recevieBytes.Length);
                        fs.Flush();
                    }
                    catch (Exception ex)
                    {
                        MainPage.Log($"down image : {ex.Message}");
                    }
                    finally
                    {
                        if (fs != null)
                        {
                            fs.Close();
                            action?.Invoke();
                        }
                    }
                });
            }
            else
            {
                action?.Invoke();
            }
        }
    }
    public class MyWebClient : WebClient
    {
        int _timeout = 10000;
        /// <summary>
        /// 超时时间(毫秒)
        /// </summary>
        public int Timeout
        {
            get
            {
                return _timeout;
            }
            set
            {
                _timeout = value;
            }
        }
        public MyWebClient()
        {
        }
        public MyWebClient(int timeout)
        {
            this._timeout = timeout;
        }
        protected override WebRequest GetWebRequest(Uri address)
        {
            var result = base.GetWebRequest(address);
            result.Timeout = this._timeout;
            return result;
        }
    }
}