//讀取分類檔 //執行完畢會回傳一個 Hashtable,裡面會放N個 List,N=分類檔的部門數量 //每個List 裡會放N個IP,N=部門底下的IP數量 public static Hashtable BuildSortList() { //部門名稱清單 SortStruct ss = new SortStruct(); ss.sortNameList = new List(); ipss.IPtoSortHT = new Hashtable(); List sort = new List(); //用來放sort List Hashtable ht = new Hashtable(); String strLine; //分類數量 int sortCount = 0; string strName; //群組名稱陣列 string[] sortName; //開啟檔案 C:\ StreamReader sr = new StreamReader(@"D:\\DVM2\\Source\\DVM2SingleReport\\CrystalReportsApplicationTest\\bin\Report\\SortList.txt"); //判斷有幾個分類 StreamReader sr2 = new StreamReader(@"D:\\DVM2\\Source\\DVM2SingleReport\\CrystalReportsApplicationTest\\bin\Report\\SortList.txt"); //幾號部門 int sortNumber = -1; int sortNumber2 = -1; //讀取到一次"[",sortCount就+1 while ((strLine = sr2.ReadLine()) != null) { strName = ""; int iTitle = -1; iTitle = strLine.IndexOf("[", StringComparison.CurrentCultureIgnoreCase); if (iTitle >= 0) { sortCount++; //讀取到"["開頭時將兩邊做切割,取中間文字 sortName = strLine.Split(new char[2] {'[', ']'}); foreach(string s in sortName) { strName += s; } //將部門名稱放入List ss.sortNameList.Add(strName); } } //部門數量 > 0 才開始讀檔 if (sortCount > 0) { //讀一行 while ((strLine = sr.ReadLine()) != null) { //所在位置 int iPos = strLine.IndexOf("="); //string[] strLines = strLine.Split('='); string strKey = string.Empty; string strValue = string.Empty; // 如果有出現 "=" 才可以切割欄位 if (iPos > 0) { strKey = strLine.Substring(0, iPos).Trim(); strValue = strLine.Substring(iPos + 1).Trim(); } //判斷目前這行是什麼部門 for (int i = 0; i < sortCount; i++) { int iTitle = strLine.IndexOf("[", StringComparison.CurrentCultureIgnoreCase); //判斷是否讀取到新的部門 if (iTitle > -1) { sortNumber2++; if (sortNumber2 == 0) break; } if (sortNumber2 > 0 && iTitle > -1) { sortNumber = i; //將上一個讀取完的部門儲存 if (sortNumber >= 0) ht.Add(ss.sortNameList[sortNumber2-1], sort); //if (sortNumber > 0) ht.Add("sort" + i, sort); //讀取新的部門就重新new一個List sort = new List(); break; } } //將讀取到的IP或電腦名稱加入List switch (strKey) { case "IP": sort.Add(strValue); ipss.IPtoSortHT.Add(strValue.ToString().Trim(), ss.sortNameList[sortNumber2]); break; case "Host": sort.Add(strValue); break; } } //如果只有一個部門 if (sortCount == 1) { ht.Add(ss.sortNameList[0], sort); return ht; } } //將最後一個部門加入List ht.Add(ss.sortNameList[sortCount-1], sort); return ht; }
2014年8月20日 星期三
C# 讀取分類檔
檔案格式為
[業務部]
IP=10.8.210.66
IP=10.8.210.67
[行政部]
IP=192.168.12.11
IP=192.168.12.12
[財務部]
IP=192.168.12.13
IP=192.168.12.14
=======================================================================================================
以下程式為自訂函式 public static Hashtable BuildSortList() 執行完畢會回傳一個
Hashtable,裡面會放N個 List,N=分類檔的部門數量
每個List 裡會放N個IP,N=部門底下的IP數量
===============================================================================
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言