如何从数据库中读取txt文件(逐行)

时间:2010-04-17 07:01:38

标签: c# asp.net sql-server filestream

我已将txt文件存储到sql server数据库。 我需要逐行读取txt文件以获取其中的内容。  我的代码:

DataTable dtDeleteFolderFile = new DataTable();
dtDeleteFolderFile = objutility.GetData("GetTxtFileonFileName", new object[] { ddlSelectFile.SelectedItem.Text }).Tables[0];

foreach (DataRow dr in dtDeleteFolderFile.Rows)
{
  name = dr["FileName"].ToString();
  records = Convert.ToInt32(dr["NoOfRecords"].ToString());
  bytes = (Byte[])dr["Data"];
}

FileStream readfile = new FileStream(Server.MapPath("txtfiles/" + name), FileMode.Open);

StreamReader streamreader = new StreamReader(readfile);
string line = "";
line = streamreader.ReadLine();

但是我在这里使用了FileStream来读取特殊路径。但我已将字节格式的txt文件保存到我的数据库中。如何使用byte []值读取txt文件以获取txt文件内容,而不是使用Path值。

2 个答案:

答案 0 :(得分:1)

鉴于您将文件放在字节数组中,您可以使用MemoryStream Class

这样的东西
using (MemoryStream m = new MemoryStream(buffer))
using (StreamReader sr = new StreamReader(m))
{
    while (!sr.EndOfStream)
    {
        string s = sr.ReadLine();
    }    
}

另请务必使用using Statement (C# Reference)

  

定义一个范围,在其范围之外   将丢弃一个或多个物体。

     

using语句允许   程序员指定何时对象   使用资源应该发布   他们。提供给使用的对象   声明必须执行   IDisposable接口。这个界面   提供Dispose方法,其中   应释放对象的资源。

答案 1 :(得分:0)

你可以在foreach

的末尾尝试这样的事情
String txtFileContent = Encoding.Unicode.GetString((Byte[])dr["Data"]);