2010-04-17 124 views
1

我已将txt文件存储到sql server数据库。 我需要逐行读取txt文件以获取其中的内容。 我的代码:如何从数据库中读取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

@Ranjana:您可以编辑您的问题,没必要再问他们!? http://stackoverflow.com/questions/2657583/how-to-read-the-txt-file-from-databasebyte-to-filestream – 2010-04-17 07:17:11

回答

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方法,其中 应释放对象的资源。

0

你可以尝试这样的事情在你foreach结束:

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