10.5 访问txt

  文本文件(.txt)是一种最基本的文件类型,访问txt的方法比较多,不仅能够通过使用ODBC .NET Data Provider进行访问,或者使用OLE DB .NET Data Provider进行访问。而可以通过System.IO进行文本文件的访问。
10.5.1 使用ODBE.NET Data Provider连接txt使用ODBE.NET Data Provider建立与txt文件的连接需要在连接字符串中指定驱动器名,同样可以在管理工具中创建【数据源(ODBC)】来访问txt文本文件,如图10-21和图10-22所示。
建立数据源
图10-21 建立数据源
完成配置数据源
图10-22 完成配置数据源
上面创建了txt数据源的ODBC数据源,当连接txt数据源时,可使用DSN连接数据源,其中txt文本中的字符如下所示。
title
连接2
连接3
连接4
连接5
连接6
连接7

  当通过ODBC连接txt数据源时,只需使用Connection对象即可,示例代码如下所示。
+展开
-C#
            OdbcConnection con = new OdbcConnection(@"DSN=txtexample");
            try
            {
                con.Open();//尝试打开连接
                Label1.Text = "连接成功";//显式连接信息
                con.Close();//关闭连接
            }
            catch
            {
                Label1.Text = "连接失败";//抛出异常
            }

  成功创建连接后,就可以对数据源进行操作了。与数据库的结构和Excel结构不同的是,txt基本上没有类似与表的数据结构,所以在使用SQL语句时,基本上是通过查询txt文件来实现的,示例代码如下所示。
+展开
-C#
        protected void Page_Load(object sender, EventArgs e)
        {
            OdbcConnection con = new OdbcConnection(@"DSN=txtexample");//创建连接
            try
            {
                con.Open();//打开连接
                OdbcDataAdapter da = new OdbcDataAdapter("select * from data.txt", con);//创建适配器
                DataSet ds = new DataSet();//创建数据集
                int count=da.Fill(ds, "txttable");//填充数据集
                for (int i = 0; i < count; i++)//遍历输出
                {
                    Response.Write(ds.Tables["txttable"].Rows[i]["title"].ToString()+"<hr/>");//输出数据
                }
            }
            catch
            {
                Response.Write("连接失败");//抛出异常
            }
        }

上述代码遍历了txt中的数据,运行结果如图10-23所示。
遍历txt中的数据
图10-23 遍历txt中的数据

10.5.2 使用OLE DB .NET Data Provider 连接txt
  使用OLE DB .NET Data Provider建立与txt文件的连接,只需要在连接字串中指定提供程序名、数据源名、扩展属性、HDR和FMT等参数即可,示例代码如下所示。
+展开
-C#
 OleDbConnection olecon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB 4.0; Data Source=c:\sample\;Extended Properties=text;HDR=yes;FMT=Delimited");//创建连接对象

  当完成连接后,在执行查询等操作时需要指定txt文件名,示例代码如下所示。
+展开
-C#
            OdbcDataAdapter da = new OdbcDataAdapter("select * from data.txt", con);//创建适配器
            DataSet ds = new DataSet();//创建数据集
            int count=da.Fill(ds, "txttable");//填充数据集
            for (int i = 0; i < count; i++)//遍历数据集
            {
                Response.Write(ds.Tables["txttable"].Rows[i]["title"].ToString()+"<hr/>");//输出数据
            }

注意:txt文件的数据连接字串中,数据库结构的中“数据库”的概念对于txt文件而言应该是文件所在的目录,而不是具体的某个文件。而具体的某个文件,相当于是数据库中“表”的概念。

10.5.3 使用System.IO命名空间
  System.IO能够创建文件,从而与txt文件进行交互,在使用System.IO命名空间时,通常需要使用各种类来进行文件操作,常用的类如下所示:
1)File:提供用于创建、复制、删除、移动和打开文件的静态方法。
2)FileInfo:提供创建、复制、删除、移动和代开文件的实例方法。
3)StreamReader:从数据流中读取字符。
4)StreamWriter:向数据流中写入字符。
  在进行文件交互操作时,通常使用File类和FileInfo类来执行相应的操作。File类和FileInfo类的基本用法基本相同,但是File类和FileInfo类有一些本质的区别。File类和FileInfo类虽然基本用法相同,但是File类不用创建类的实例,而FileInfo类需要创建类的实例,所以File类可直接调用其类的静态方法执行文件操作,效率也比FileInfo类高。
  File类包含的主要方法如下所示:
1)OpenText:打开现有的文件进行读取。
2)Exists:判断一个文件是否存在。
3)CreateText:创建或打开一个文件以便写入文本字符串。
4)AppendText:将txt文本追加到现有的文本。
  在执行txt操作时,首先需要判断文件是否存在,如果文件存在,则可用File类的OpenText方法打开txt文件。首先,需要创建一个txt文件并编写一些内容,内容如下所示。
something happend
in my restless dream,i see that place
silent hill

 编写完成txt文件后,则可以通过File类读取txt文件内容,示例代码如下所示。
+展开
-C#
            if (File.Exists(Server.MapPath("data.txt")))//判断文件是否存在
            {
                Response.Write("文件存在");//输出文件存在
                File.OpenText(Server.MapPath("data.txt"));//打开文件
            }

  如果文件存在,并打开了文件,则需要创建StreamReader对象,使用StreamReader对象的ReadLine方法读取一行或ReadToEnd方法读取整个文本文件。示例代码如下所示。
+展开
-C#
StreamReader rd = File.OpenText(Server.MapPath("data.txt"));//StreamReader对象
while (rd.Peek() != -1)//如果没有读完
{
  Response.Write(rd.ReadLine() + "<hr/>");//输出信息
}

  上述代码中,Peek方法用于返回指定的StreamReader对象流中的下一个字符,但是不会把这个字符从流中删掉。如果流中没有文本字符,则会返回-1,运行结果如图10-24所示。
读取txt文本文件
图10-24 读取txt文本文件
上述代码运行后,页面会从txt文件中读取内容,并循环遍历输出。

加支付宝好友偷能量挖...


评论(0)网络
阅读(127)喜欢(0)Asp.Net/C#/WCF