1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Runtime.Serialization.Formatters.Binary; 7 8 namespace WpfApplication1 9 { 10 public static class FileDateDo 11 { 12 13 14 public static T getFileDate<T>(string filePath) where T : new() 15 { 16 if (!File.Exists(filePath)) 17 { 18 return default(T); 19 } 20 T t = new T(); 21 FileStream fs = new FileStream(filePath, FileMode.Open); 22 if (fs.Length < 1) { return t; } 23 BinaryFormatter bf = new BinaryFormatter(); 24 t = (T)(bf.Deserialize(fs)); 25 fs.Close(); 26 return t; 27 28 29 } 30 public static void Save<T>(string filePath, List<T> t) 31 { 32 33 try 34 { 35 using (FileStream fss = new FileStream(filePath, FileMode.Create)) 36 { 37 BinaryFormatter bs = new BinaryFormatter(); 38 bs.Serialize(fss, t); 39 } 40 } 41 catch (Exception) 42 { 43 44 throw; 45 } 46 } 47 48 49 50 51 } 52 }
缺點sql
1.若是有10w條記錄,修改一條你就須要重寫這個BIN文件,開銷至關大,另外若是隻是查詢一條記錄你也須要從新將這個BIN全部內容加載到內存創建對應的對象。
2.Access, SQL Server能夠簡單理解作了2件事情,第一他提供了統一界面,任何語言任何進程經過sql均可以與之通信,獲取數據。ide
第二件事情他提供了索引機制,經過索引不須要加載全部數據到內存就能根據sql定位查詢結果。spa
3.修改對象結構會形成數據沒法讀取,須要保留原對象與新對象,將原數據讀取至原對象,而後經過程序轉換到新對象,將新對象從新保存在一個新文件(BIN)裏面,最後原對象文件和原數據文件(BIN)刪除。3d
4.實時保存,不建議實時保存,等全部處理完畢延遲保存數據最好。
可是若是你的應用很小,內存足夠hold住數據,且不須要實時保存,那麼此方法是可行的,並且能夠說比用access都好,呵呵。
具體問題具體分析,合適就好。code