wei
2020-12-11 488efb508eb0648773fe7b68e810e04bcd7ca075
HDL_ON/DAL/FileUtils.cs
@@ -1,448 +1,448 @@
using System;
using System.IO;
using System.Collections.Generic;
using Shared;
//using System;
//using System.IO;
//using System.Collections.Generic;
//using Shared;
namespace HDL_ON
{
    public static class FileUtils
    {
        public static string RootPath = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + "/";
//namespace HDL_ON
//{
//    public static class FileUtils
//    {
//        public static string RootPath = Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + "/";
        /// <summary>
        /// 是否存在文件夹
        /// </summary>
        /// <returns></returns>
        public static bool IsExisFolder(string folderName)
        {
            bool result = false;
            var path = Path.Combine(RootPath, folderName);
            result = Directory.Exists(path);
            return result;
        }
        /// <summary>
        /// 创建一个住宅的备份文件夹
        /// </summary>
        public static string CreateRegionBackup(string regionId)
        {
            var path = Path.Combine(RootPath, regionId);
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            return path + "/";
        }
        /// <summary>
        /// 判断是否已经存在住宅的本地文件夹
        /// </summary>
        public static bool ExistRegion(string regionId)
        {
            var path = Path.Combine(RootPath, regionId);
            return Directory.Exists(path);
        }
//        /// <summary>
//        /// 是否存在文件夹
//        /// </summary>
//        /// <returns></returns>
//        public static bool IsExisFolder(string folderName)
//        {
//            bool result = false;
//            var path = Path.Combine(RootPath, folderName);
//            result = Directory.Exists(path);
//            return result;
//        }
//        /// <summary>
//        /// 创建一个住宅的备份文件夹
//        /// </summary>
//        public static string CreateRegionBackup(string regionId)
//        {
//            var path = Path.Combine(RootPath, regionId);
//            if (!Directory.Exists(path))
//            {
//                Directory.CreateDirectory(path);
//            }
//            return path + "/";
//        }
//        /// <summary>
//        /// 判断是否已经存在住宅的本地文件夹
//        /// </summary>
//        public static bool ExistRegion(string regionId)
//        {
//            var path = Path.Combine(RootPath, regionId);
//            return Directory.Exists(path);
//        }
        /// <summary>
        /// 删除指定区域里面的所有文件
        /// </summary>
        /// <param name="path">Path.</param>
        public static void DeleteRegionFiles(string path)
        {
            foreach (var fileName in ReadRegionFiles(path))
            {
                File.Delete(Path.Combine(path, fileName));
                MainPage.Log("删除文件名为:" + fileName);
            }
        }
//        /// <summary>
//        /// 删除指定区域里面的所有文件
//        /// </summary>
//        /// <param name="path">Path.</param>
//        public static void DeleteRegionFiles(string path)
//        {
//            foreach (var fileName in ReadRegionFiles(path))
//            {
//                File.Delete(Path.Combine(path, fileName));
//                MainPage.Log("删除文件名为:" + fileName);
//            }
//        }
        /// <summary>
        /// 读取区域文件夹里面的文件
        /// </summary>
        static List<string> ReadRegionFiles(string regionRootPath)
        {
            List<string> listFiles = new List<string>();
            DirectoryInfo TheFolder = new DirectoryInfo(regionRootPath);
            foreach (FileInfo NextFile in TheFolder.GetFiles())
            {
                listFiles.Add(NextFile.Name);
            }
            return listFiles;
        }
//        /// <summary>
//        /// 读取区域文件夹里面的文件
//        /// </summary>
//        static List<string> ReadRegionFiles(string regionRootPath)
//        {
//            List<string> listFiles = new List<string>();
//            DirectoryInfo TheFolder = new DirectoryInfo(regionRootPath);
//            foreach (FileInfo NextFile in TheFolder.GetFiles())
//            {
//                listFiles.Add(NextFile.Name);
//            }
//            return listFiles;
//        }
        /// <summary>
        /// 恢复区域文件夹里面的文件
        /// </summary>
        public static void RestoreRegionFiles(string regionRootPath)
        {
            DirectoryInfo TheFolder = new DirectoryInfo(regionRootPath);
            int index = 0;
            var thFolders = TheFolder.GetFiles();
            int folderCount = thFolders.Length;
            foreach (FileInfo NextFile in thFolders)
            {
                index++;
                if (NextFile.Name.Contains(ImageUtlis.HEADIMAGE))
                {
                    continue;
                }
                if (NextFile.Name == "null" || NextFile.Name == "UserConfig" || NextFile.Name == "UserInfo_File" || NextFile.Name == "AccountListDB" || NextFile.Name == OnAppConfig.ConfigFile)
                {
                    continue;
                }
                FileInfo fileInfo = new FileInfo(regionRootPath + NextFile.Name);
                if (fileInfo.Exists)
                {
                    fileInfo.MoveTo(Application.RootPath + NextFile.Name);
                    MainPage.Log("Restroe : " + NextFile.Name);
                }
            }
        }
//        /// <summary>
//        /// 恢复区域文件夹里面的文件
//        /// </summary>
//        public static void RestoreRegionFiles(string regionRootPath)
//        {
//            DirectoryInfo TheFolder = new DirectoryInfo(regionRootPath);
//            int index = 0;
//            var thFolders = TheFolder.GetFiles();
//            int folderCount = thFolders.Length;
//            foreach (FileInfo NextFile in thFolders)
//            {
//                index++;
//                if (NextFile.Name.Contains(ImageUtlis.HEADIMAGE))
//                {
//                    continue;
//                }
//                if (NextFile.Name == "null" || NextFile.Name == "UserConfig" || NextFile.Name == "UserInfo_File" || NextFile.Name == "AccountListDB" || NextFile.Name == OnAppConfig.ConfigFile)
//                {
//                    continue;
//                }
//                FileInfo fileInfo = new FileInfo(regionRootPath + NextFile.Name);
//                if (fileInfo.Exists)
//                {
//                    fileInfo.MoveTo(Application.RootPath + NextFile.Name);
//                    MainPage.Log("Restroe : " + NextFile.Name);
//                }
//            }
//        }
        
        /// <summary>
        /// 遍历文件
        /// </summary>
        public static List<string> ReadFiles()
        {
            List<string> listFiles = new List<string>();
            DirectoryInfo TheFolder = new DirectoryInfo(RootPath);
            foreach (FileInfo NextFile in TheFolder.GetFiles())
            {
                listFiles.Add(NextFile.Name);
            }
            return listFiles;
        }
//        /// <summary>
//        /// 遍历文件
//        /// </summary>
//        public static List<string> ReadFiles()
//        {
//            List<string> listFiles = new List<string>();
//            DirectoryInfo TheFolder = new DirectoryInfo(RootPath);
//            foreach (FileInfo NextFile in TheFolder.GetFiles())
//            {
//                listFiles.Add(NextFile.Name);
//            }
//            return listFiles;
//        }
        /// <summary>
        /// 更改文件名
        /// </summary>
        /// <param name="oldFilePath">Old file path.</param>
        /// <param name="newFilePath">New file path.</param>
        public static void ReNameFile(string oldFilePath, string newFilePath)
        {
            if (oldFilePath == newFilePath)
            {
                return;
            }
            DeleteFile(newFilePath);
            FileInfo fileInfo = new FileInfo(Application.RootPath + oldFilePath);
            if (fileInfo.Exists)
            {
                fileInfo.MoveTo(Application.RootPath + newFilePath);
            }
        }
//        /// <summary>
//        /// 更改文件名
//        /// </summary>
//        /// <param name="oldFilePath">Old file path.</param>
//        /// <param name="newFilePath">New file path.</param>
//        public static void ReNameFile(string oldFilePath, string newFilePath)
//        {
//            if (oldFilePath == newFilePath)
//            {
//                return;
//            }
//            DeleteFile(newFilePath);
//            FileInfo fileInfo = new FileInfo(Application.RootPath + oldFilePath);
//            if (fileInfo.Exists)
//            {
//                fileInfo.MoveTo(Application.RootPath + newFilePath);
//            }
//        }
        public static void ReNameFoler(string srcFolderPath, string destFolderPath)
        {
            if (srcFolderPath == destFolderPath)
            {
                return;
            }
            var srcPath = Path.Combine(RootPath, srcFolderPath);
#if DEBUG
            DirectoryInfo root = new DirectoryInfo (RootPath);
            foreach (DirectoryInfo d in root.GetDirectories ()) {
                MainPage.Log ("文件夹:" + d.Name);
            }
#endif
            if (Directory.Exists(srcPath))
            {
                DirectoryInfo folder = new DirectoryInfo(srcPath);
                var path = Path.Combine(RootPath, destFolderPath);
                if (Directory.Exists(path))
                {
                    FileAttributes attr0 = File.GetAttributes(path);
                    if (attr0 == FileAttributes.Directory)
                    {
                        Directory.Delete(path, true);
                    }
                    else
                    {
                        File.Delete(path);
                    }
                }
                folder.MoveTo(path);
//        public static void ReNameFoler(string srcFolderPath, string destFolderPath)
//        {
//            if (srcFolderPath == destFolderPath)
//            {
//                return;
//            }
//            var srcPath = Path.Combine(RootPath, srcFolderPath);
//#if DEBUG
//            DirectoryInfo root = new DirectoryInfo (RootPath);
//            foreach (DirectoryInfo d in root.GetDirectories ()) {
//                MainPage.Log ("文件夹:" + d.Name);
//            }
//#endif
//            if (Directory.Exists(srcPath))
//            {
//                DirectoryInfo folder = new DirectoryInfo(srcPath);
//                var path = Path.Combine(RootPath, destFolderPath);
//                if (Directory.Exists(path))
//                {
//                    FileAttributes attr0 = File.GetAttributes(path);
//                    if (attr0 == FileAttributes.Directory)
//                    {
//                        Directory.Delete(path, true);
//                    }
//                    else
//                    {
//                        File.Delete(path);
//                    }
//                }
//                folder.MoveTo(path);
#if DEBUG
                List<string> listFiles = new List<string> ();
                DirectoryInfo TheFolder = new DirectoryInfo (path);
                foreach (FileInfo NextFile in TheFolder.GetFiles ()) {
                    MainPage.Log (NextFile.Name);
                }
#endif
            }
//#if DEBUG
//                List<string> listFiles = new List<string> ();
//                DirectoryInfo TheFolder = new DirectoryInfo (path);
//                foreach (FileInfo NextFile in TheFolder.GetFiles ()) {
//                    MainPage.Log (NextFile.Name);
//                }
//#endif
//            }
#if DEBUG
            foreach (DirectoryInfo d in root.GetDirectories ()) {
                MainPage.Log ("文件夹:" + d.Name);
            }
#endif
        }
//#if DEBUG
//            foreach (DirectoryInfo d in root.GetDirectories ()) {
//                MainPage.Log ("文件夹:" + d.Name);
//            }
//#endif
//        }
        /// <summary>
        /// 文件是否存在
        /// </summary>
        /// <param name="filePath">File path.</param>
        public static bool Exists(string filePath)
        {
            //System.MainPage.WriteLog ("Exists==" + Path.Combine (RootPath, filePath));
            return File.Exists(Path.Combine(RootPath, filePath));
        }
//        /// <summary>
//        /// 文件是否存在
//        /// </summary>
//        /// <param name="filePath">File path.</param>
//        public static bool Exists(string filePath)
//        {
//            //System.MainPage.WriteLog ("Exists==" + Path.Combine (RootPath, filePath));
//            return File.Exists(Path.Combine(RootPath, filePath));
//        }
        /// <summary>
        /// Deletes the file.
        /// </summary>
        /// <param name="fileName">File name.</param>
        public static void DeleteFile(string fileName)
        {
            if (fileName == null || fileName == "Language.ini" || fileName == "AccountListDB" || fileName == OnAppConfig.ConfigFile)
            {
                return;
            }
            File.Delete(Path.Combine(RootPath, fileName));
            MainPage.Log("删除文件名为:" + fileName);
        }
//        /// <summary>
//        /// Deletes the file.
//        /// </summary>
//        /// <param name="fileName">File name.</param>
//        public static void DeleteFile(string fileName)
//        {
//            if (fileName == null || fileName == "Language.ini" || fileName == "AccountListDB" || fileName == OnAppConfig.ConfigFile)
//            {
//                return;
//            }
//            File.Delete(Path.Combine(RootPath, fileName));
//            MainPage.Log("删除文件名为:" + fileName);
//        }
        /// <summary>
        /// Deletes all file.
        /// </summary>
        public static void DeleteAllFile()
        {
            List<string> filesList = ReadFiles();
            for (int j = 0; j < filesList.Count; j++)
            {
                var f = filesList[j];
                if (f == "linphonerc" || f == "AccountListDB" || f == "UserInfo_File" || f == OnAppConfig.ConfigFile)
                    continue;
                DeleteFile(f);
            }
        }
//        /// <summary>
//        /// Deletes all file.
//        /// </summary>
//        public static void DeleteAllFile()
//        {
//            List<string> filesList = ReadFiles();
//            for (int j = 0; j < filesList.Count; j++)
//            {
//                var f = filesList[j];
//                if (f == "linphonerc" || f == "AccountListDB" || f == "UserInfo_File" || f == OnAppConfig.ConfigFile)
//                    continue;
//                DeleteFile(f);
//            }
//        }
        /// <summary>
        /// Writes the file by bytes.
        /// </summary>
        /// <returns><c>true</c>, if file by bytes was writed, <c>false</c> otherwise.</returns>
        /// <param name="fileName">File name.</param>
        /// <param name="bytes">Bytes.</param>
        public static bool WriteFileByBytes(string fileName, byte[] bytes)
        {
            if (fileName == null || (fileName = fileName.Trim()) == (""))
            {
                return false;
            }
//        /// <summary>
//        /// Writes the file by bytes.
//        /// </summary>
//        /// <returns><c>true</c>, if file by bytes was writed, <c>false</c> otherwise.</returns>
//        /// <param name="fileName">File name.</param>
//        /// <param name="bytes">Bytes.</param>
//        public static bool WriteFileByBytes(string fileName, byte[] bytes)
//        {
//            if (fileName == null || (fileName = fileName.Trim()) == (""))
//            {
//                return false;
//            }
            FileStream fs = null;
//            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());
                }
            }
        }
//            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>
        /// Writes the file by input stream.
        /// </summary>
        /// <returns><c>true</c>, if file by input stream was writed, <c>false</c> otherwise.</returns>
        /// <param name="fileName">File name.</param>
        /// <param name="inputStream">Input stream.</param>
        /// <param name="isNeedRootPath">If set to <c>true</c> is need root path.</param>
        public static bool WriteFileByInputStream(string fileName, Stream inputStream)
        {
            if (fileName == null || (fileName = fileName.Trim()) == (""))
            {
                return false;
            }
            FileStream fs = null;
//        /// <summary>
//        /// Writes the file by input stream.
//        /// </summary>
//        /// <returns><c>true</c>, if file by input stream was writed, <c>false</c> otherwise.</returns>
//        /// <param name="fileName">File name.</param>
//        /// <param name="inputStream">Input stream.</param>
//        /// <param name="isNeedRootPath">If set to <c>true</c> is need root path.</param>
//        public static bool WriteFileByInputStream(string fileName, Stream inputStream)
//        {
//            if (fileName == null || (fileName = fileName.Trim()) == (""))
//            {
//                return false;
//            }
//            FileStream fs = null;
            try
            {
                byte[] buffer = new byte[4 * 1024];
                int length = 0;
                while ((length = inputStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    if (fs == null)
                    {
                        fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write);
                    }
                    fs.Write(buffer, 0, length);
                    fs.Flush();
                }
//            try
//            {
//                byte[] buffer = new byte[4 * 1024];
//                int length = 0;
//                while ((length = inputStream.Read(buffer, 0, buffer.Length)) != 0)
//                {
//                    if (fs == null)
//                    {
//                        fs = new FileStream(Path.Combine(RootPath, fileName), FileMode.Create, FileAccess.Write);
//                    }
//                    fs.Write(buffer, 0, length);
//                    fs.Flush();
//                }
                return true;
            }
            catch
            {
                return false;
            }
            finally
            {
                try
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
                catch
                {
                }
            }
        }
//                return true;
//            }
//            catch
//            {
//                return false;
//            }
//            finally
//            {
//                try
//                {
//                    if (fs != null)
//                    {
//                        fs.Close();
//                    }
//                }
//                catch
//                {
//                }
//            }
//        }
        /// <summary>
        /// read file
        /// </summary>
        /// <returns>The file.</returns>
        /// <param name="fileName">File name.</param>
        public static byte[] ReadImage(string fileName)
        {
            if (Shared.Application.IsPad)
            {
                fileName = "Pad/" + fileName;
            }
            else
            {
                fileName = "Phone/" + fileName;
            }
            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>
//        /// read file
//        /// </summary>
//        /// <returns>The file.</returns>
//        /// <param name="fileName">File name.</param>
//        public static byte[] ReadImage(string fileName)
//        {
//            if (Shared.Application.IsPad)
//            {
//                fileName = "Pad/" + fileName;
//            }
//            else
//            {
//                fileName = "Phone/" + fileName;
//            }
//            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
//                {
                }
            }
        }
//                }
//            }
//        }
        public static byte[] ReadFile(string fileName)
        {
            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
                {
//        public static byte[] ReadFile(string fileName)
//        {
//            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>
        ///
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="imagePath"></param>
        public static void FileCopyToRootPath(string oldPath, string fileName)
        {
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(oldPath);
            if (fileInfo.Exists)
            {
                fileInfo.CopyTo(Path.Combine(RootPath, fileName), true);
                //Utlis.WriteLine("FileCopyToRootPath : " + Path.Combine(RootPath, fileName));
            }
        }
//        /// <summary>
//        ///
//        /// </summary>
//        /// <param name="fileName"></param>
//        /// <param name="imagePath"></param>
//        public static void FileCopyToRootPath(string oldPath, string fileName)
//        {
//            System.IO.FileInfo fileInfo = new System.IO.FileInfo(oldPath);
//            if (fileInfo.Exists)
//            {
//                fileInfo.CopyTo(Path.Combine(RootPath, fileName), true);
//                //Utlis.WriteLine("FileCopyToRootPath : " + Path.Combine(RootPath, fileName));
//            }
//        }
    }
    //[System.Serializable]
    //class Song
    //{
    //    //string [] ss = new string [] {  };
    //    public List<Album> album = new List<Album>();
    //    public List<Artist> artist = new List<Artist>();
    //    public string sss;
    //}
    //[System.Serializable]
    //class Album
    //{
    //    public string albumname;
    //    public string artistname;
    //    public string artistpic;
    //}
    //[System.Serializable]
    //class Artist
    //{
    //    public string artistname;
    //    public string artistpic;
    //}
//    }
//    //[System.Serializable]
//    //class Song
//    //{
//    //    //string [] ss = new string [] {  };
//    //    public List<Album> album = new List<Album>();
//    //    public List<Artist> artist = new List<Artist>();
//    //    public string sss;
//    //}
//    //[System.Serializable]
//    //class Album
//    //{
//    //    public string albumname;
//    //    public string artistname;
//    //    public string artistpic;
//    //}
//    //[System.Serializable]
//    //class Artist
//    //{
//    //    public string artistname;
//    //    public string artistpic;
//    //}
}
//}