From 5a5a2b696866f947b6025d26c3302e8ffef46435 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期一, 11 一月 2021 16:11:20 +0800
Subject: [PATCH] 2021-01-11 1.更新MQTT连接和本地搜索网关方法。2.子账号相关接口完善

---
 Crabtree/SmartHome/IO/FileUtils.cs |   73 +++++++++++++++++++++++++-----------
 1 files changed, 51 insertions(+), 22 deletions(-)

diff --git a/Crabtree/SmartHome/IO/FileUtils.cs b/Crabtree/SmartHome/IO/FileUtils.cs
old mode 100755
new mode 100644
index f8b83f6..b0c1f85
--- a/Crabtree/SmartHome/IO/FileUtils.cs
+++ b/Crabtree/SmartHome/IO/FileUtils.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.IO;
 using System.Collections.Generic;
+using System.Threading;
 
 namespace Shared.IO
 {
@@ -29,7 +30,7 @@
         {
             foreach (var fileName in ReadRegionFiles (path)) {
                 System.IO.File.Delete (System.IO.Path.Combine (path, fileName));
-                Console.WriteLine ("Del region file :" + fileName);
+                Utlis.WriteLine ("Del region file :" + fileName);
             }
         }
 
@@ -60,7 +61,7 @@
                 System.IO.FileInfo fileInfo = new System.IO.FileInfo (regionRootPath + NextFile.Name);
                 if (fileInfo.Exists) {
                     fileInfo.MoveTo (Application.RootPath + NextFile.Name);
-                    Console.WriteLine ("Restroe : "+ NextFile.Name);
+                    Utlis.WriteLine ("Restroe : "+ NextFile.Name);
                 }
                 Application.RunOnMainThread (() => {
                     int pro = (int)(index * 1.0 / folderCount * 50) + 50;
@@ -111,7 +112,7 @@
 #if DEBUG
             DirectoryInfo root = new DirectoryInfo (RootPath);
             foreach (DirectoryInfo d in root.GetDirectories ()) {
-                Console.WriteLine ("鏂囦欢澶癸細" + d.Name);
+                Utlis.WriteLine ("鏂囦欢澶癸細" + d.Name);
             }
 #endif
             if (System.IO.Directory.Exists (srcPath)) {
@@ -132,14 +133,14 @@
                 List<string> listFiles = new List<string> ();
                 DirectoryInfo TheFolder = new DirectoryInfo (path);
                 foreach (FileInfo NextFile in TheFolder.GetFiles ()) {
-                    Console.WriteLine (NextFile.Name);
+                    Utlis.WriteLine (NextFile.Name);
                 }
 #endif
             }
 
 #if DEBUG
             foreach (DirectoryInfo d in root.GetDirectories ()) {
-                Console.WriteLine ("鏂囦欢澶癸細" + d.Name);
+                Utlis.WriteLine ("鏂囦欢澶癸細" + d.Name);
             }
 #endif
         }
@@ -150,7 +151,7 @@
 		/// <param name="filePath">File path.</param>
 		public static bool Exists (string filePath)
 		{
-			//System.Console.WriteLine ("Exists==" + System.IO.Path.Combine (RootPath, filePath));
+			//Utlis.WriteLine ("Exists==" + System.IO.Path.Combine (RootPath, filePath));
 			return System.IO.File.Exists (System.IO.Path.Combine (RootPath, filePath));
 		}
 
@@ -160,11 +161,11 @@
         /// <param name="fileName">File name.</param>
         public static void DeleteFile (string fileName)
         {
-            if (fileName == null || fileName == "Language.ini" || fileName == "AccountListDB") {
+            if (fileName == null || fileName == "Language.ini" || fileName == "AccountListDB" || fileName == "CommonConfig") {
                 return;
             }
             System.IO.File.Delete (System.IO.Path.Combine (RootPath, fileName));
-            Console.WriteLine ("鍒犻櫎鏂囦欢鍚嶄负锛�" + fileName);
+            Utlis.WriteLine ("鍒犻櫎鏂囦欢鍚嶄负锛�" + fileName);
             //if (UserConfig.Instance.LocalFiles.Contains (fileName)) {
             //    UserConfig.Instance.LocalFiles.Remove (fileName);
             //}
@@ -181,6 +182,23 @@
 				DeleteFile (f);
 			}
 		}
+
+        /// <summary>
+        /// 鍒犻櫎鎵�鏈夊洖璺澶囨暟鎹�
+        /// </summary>
+        public static void DeleteAllCommon () {
+            //鎵惧嚭闇�瑕佹樉绀虹殑璁惧
+            var filesList = ReadFiles ().FindAll ((obj) => {
+                string [] str = obj.Split ('_');
+                return obj.StartsWith ("Equipment_") && str.Length == 5;
+            });
+
+            for (int j = 0; j < filesList.Count; j++) {
+                var f = filesList [j];
+                DeleteFile (f);
+            }
+
+        }
 
 		/// <summary>
 		/// Reads the equipment message.
@@ -221,17 +239,23 @@
 				fileName += "_" + (loopID.Length < 2 ? "0" + loopID : loopID);
 			}
             common.SavePath = fileName;
-			Console.WriteLine (fileName);
+			Utlis.WriteLine (fileName);
 			WriteFileByBytes (fileName, SimpleControl.CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (common)));
 		}
 
-		/// <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)
+  		/// <summary>
+        /// 澧炲姞 璇诲啓閿侊紝褰撹祫婧愬浜庡啓鍏ユā寮忔椂锛屽叾浠栫嚎绋嬪啓鍏ラ渶瑕佺瓑寰呮湰娆″啓鍏ョ粨鏉熶箣鍚庢墠鑳界户缁啓鍏�
+        /// 鐢ㄤ簬瑙e喅澶氱嚎绋嬬幆澧冨啓鍏ユ枃浠堕棶棰�
+        /// </summary>
+        static ReaderWriterLockSlim LogWriteLock = new ReaderWriterLockSlim ();
+
+	    /// <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;
@@ -240,24 +264,29 @@
 			System.IO.FileStream fs = null;
 
 			try {
-				fs = new FileStream (System.IO.Path.Combine (RootPath, fileName), FileMode.Create, FileAccess.Write);
+                //璁剧疆璇诲啓閿佷负鍐欏叆妯″紡鐙崰璧勬簮锛屽叾浠栧啓鍏ヨ姹傞渶瑕佺瓑寰呮湰娆″啓鍏ョ粨鏉熶箣鍚庢墠鑳界户缁啓鍏�
+                LogWriteLock.EnterWriteLock ();
+
+                fs = new FileStream (System.IO.Path.Combine (RootPath, fileName), FileMode.Create, FileAccess.Write);
 				fs.Write (bytes, 0, bytes.Length);
 				fs.Flush ();
-				Console.WriteLine ("SaveFile:" + fileName);
+				//Utlis.WriteLine ("SaveFile:" + fileName + " : " + bytes.Length.ToString());
                 //if (!UserConfig.Instance.LocalFiles.Contains (fileName)) {
                 //    UserConfig.Instance.LocalFiles.Add (fileName);
                 //}
 				return true;
 			} catch (Exception ex) {
-				Console.WriteLine ("FileUtiles Code 113:" + ex.ToString ());
+				Utlis.WriteLine ("FileUtiles Code 113:" + ex.ToString ());
 				return false;
 			} finally {
-				try {
-					if (fs != null) {
+                try {
+                    //閫�鍑哄啓鍏ユā寮忥紝閲婃斁璧勬簮鍗犵敤
+                    LogWriteLock.ExitWriteLock ();
+                    if (fs != null) {
 						fs.Close ();
 					}
 				} catch (Exception ex) {
-					Console.WriteLine ("FileUtils Code 121 :" + ex.ToString ());
+					Utlis.WriteLine ("FileUtils Code 121 :" + ex.ToString ());
 				}
 			}
 		}

--
Gitblit v1.8.0