dataview,datdalist以及hashtable dictionary和FileStream和Stream

1、DataView是DataTable的表示,DataTable表里的记录是没有顺序的,但显示可以有不同顺序(DataVIew),

但还是同一张表,所以一个DataTable可以有多个DataView,默认访问DataTable,其实是访问他的

DefaultView。DataSet则是DataTable的集合,也可以有不止一个DataTable

2、DataView   是一张DataTable的虚拟视图   ,主要用来显示数据的   ,其实数据的更改都是发生在DataTable中。

如果以数据库来打比方,DataSet就是一个功能简单的数据库,是多个表(DataTable)的集合,DataTable就是对应数

据库中的表,而DataView则对应数据库中的视图(View)。

//定义一个DataView ,得到一个全部职员的视图
DataView dataView1 = DbHelperSQL.QueryDataView(sql);

//过滤得到一个只显示男职员的视图 
dataView1.RowFilter = " sex='男' ";

因为是视图不会改变数据,可以重复使用

_________________________________________________________________________________

由于 Hashtable 和 Dictionary 同时存在, 在使用场景上必然存在选择性, 并不任何时刻都能相互替代.
[1] 单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
[2] 多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减.
[3] Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.

DataColumn 是用于创建 DataTable 的列

 

http://blog.sina.com.cn/s/blog_4568633c0100n3po.html

◆FileStream对象

FileStream对象表示在磁盘或网络路径上指向文件的流。当类提供向文件读写字节的方法时,经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。字符数据易于使用,但是有些操作比如随机文件访问,就必须由FileStream对象执行。

FileStream对象的构造函数:

FileStream aFile = new FileStream(“Log.txt”,FileMode.OpenOrCreate);

FileMode枚举具有几种成员:

Append------如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建一个新文件。FileMode.Append仅可以与枚举FileAccess.Write联合使用

Create------创建新文件;如果存在这样的文件,就破坏它。

CreateNew------创建新文件,但是如果已经存在此文件,则抛出异常

Open------打开现有的文件,但是不存在所指定的文件,则抛出异常

OpenOrCreate------如果文件存在,则规定打开文件,否则就创建新文件,如果文件已经存在,则保留在文件中的数据

Truncate------打开现有文件,清除其内容,然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期,必须存在有文件,否则就抛出异常



访问级别

 前面的构造函数默认以只读模式打开文件,需要一个附加参数规定不同的访问级别,此参数是FileAccess参数。

FileStream aFile=new FileStream(”Log.txt”,fileMode.OpenOrCreate,FileAccess.Write)

      FileAccess枚举有三种类型:Read、Write、ReadWrite.此属性的作用是:基于用户的身份验证级别改变用户对文件的访问



 读取文件的位置用seek:public long Seek(long offset,SeekOrigin origin)

Long offset是规定文件指针以字节为单位的移动距离;SeekOrigin origin是规定开始计算的起始位置,此枚举包含3个值:Begin,Current和End。

   例:aFile.Seek(8,SeekOrigin.Begin);// SeekOrigin.Begin指得是文件指针从文件的第一个字节起;而参数‘8‘指得是移动到文件的第8个字节

   例2:afile.Seek(2,SeekOrigin.Current)//在当前位置开始,再移动2个字节。

   例3:aFile.Seek(-5,SeekOrigin.End)//在文件末端位置开始,倒数5个字节。

FileStream aFile = new FileStream(“Log.txt”,FileMode.CreatcNew);

StreamWriter sw = new StreamWriter(aFile);

也可直接从文件中创建StreamWriter对象:

  StreamWriter sw = new StreamWriter(“Log.txt”,true);

     后面这个Boolean值规定是附加文件还是创建新文件,如果此值为false,则就创建一个新文件,或者截取现有文件并打开它。如果此值设置为true,则打开文件,保留原来的数据,如果找不到文件,则创建一个新文件。

File使用的是文件级别,可以直接随机访问seek  Stream 则是字符串级别

如果需要网上下载保存图片等,需要转化为byte[] 使用filestream

你可能感兴趣的:(Hashtable)