【问题标题】:how to read the txt file from the database(line by line)如何从数据库中读取txt文件(逐行)
【发布时间】:2010-04-17 07:01:37
【问题描述】:

我已将 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 值。

【问题讨论】:

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


【解决方案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 方法,该方法 应该释放对象的资源。

【讨论】:

    【解决方案2】:

    您可以在foreach 末尾尝试这样的操作:

    String txtFileContent = Encoding.Unicode.GetString((Byte[])dr["Data"]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多