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 MsChartHelp
9 {
10 static class FileSerialize
11 {
12 // 获取文件时可以直接拿数组
13 public static T GetFileInfo<T>( string filePath) where T : new ()
14 {
15 T t = new T();
16 CreateFile<T> (filePath);
17 FileStream fs = new FileStream(filePath, FileMode.Open);
18 BinaryFormatter bf = new BinaryFormatter();
19 if (fs.Length < 1 ) { return t; }
20 t = (T)(bf.Deserialize(fs));
21 fs.Close();
22 return t;
23 }
24
25 // BIN文件是否存在
26 private static void CreateFile<T>( string filePath) where T : new ()
27 {
28 T t = new T();
29 if (! File.Exists(filePath))
30 {
31 FileStream fs = new FileStream(filePath, FileMode.Create);
32 BinaryFormatter bs = new BinaryFormatter();
33 bs.Serialize(fs, t);
34 fs.Close();
35 }
36 }
37
38 // 保存数组LIST<U>
39 public static void Save<u>( string filePath, List<u> South)
40 {
41 List<u> souTrim = (List<u> )South;
42 FileStream fs = new FileStream(filePath, FileMode.Create);
43 BinaryFormatter bff = new BinaryFormatter();
44 try
45 {
46 bff.Serialize(fs, souTrim);
47 }
48 catch (Exception)
49 {
50
51 throw ;
52 }
53 finally
54 {
55
56 fs.Close();
57 }
58 }
59
60
61 public static void Save<T>( string filePath, T South)
62 {
63 FileStream fs = new FileStream(filePath, FileMode.Create);
64 BinaryFormatter bff = new BinaryFormatter();
65 try
66 {
67 bff.Serialize(fs, South);
68 }
69 catch (Exception)
70 {
71
72 throw ;
73 }
74 finally
75 {
76
77 fs.Close();
78 }
79 }
80 }
81 }
View Code
缺点
1.如果有10w条记录,修改一条你就需要重写这个BIN文件,开销相当大,另外如果只是查询一条记录你也需要重新将这个BIN所有内容加载到内存建立对应的对象。
2.Access, SQL Server可以简单理解做了2件事情,第一他提供了统一界面,任何语言任何进程通过sql都可以与之通讯,获取数据。
第二件事情他提供了索引机制,通过索引不需要加载所有数据到内存就能根据sql定位查询结果。
3.修改对象结构会造成数据无法读取,需要保留原对象与新对象,将原数据读取至原对象,然后通过程序转换到新对象,将新对象重新保存在一个新文件(BIN)里面,最后原对象文件和原数据文件(BIN)删除。
4.实时保存,不建议实时保存,等所有处理完毕延迟保存数据最好。
但是如果你的应用很小,内存足够hold住数据,且不需要实时保存,那么此方法是可行的,而且可以说比用access都好,呵呵。
具体问题具体分析,合适就好。
BIN文件对象数据库,直接存储对象做数据库,小型项目用它准没错
标签:
查看更多关于BIN文件对象数据库,直接存储对象做数据库,小型项目用它准没错的详细内容...