2016-12-30 89 views
-1

我想将文本文件存储在字符串数组中的文本文件中,并将其传送到数据网格视图表。有没有什么办法可以做到这一点如何读取文件夹中的多个texfile并将每个文本文件存储在数组中C#

private string[] textfiles = Directory.GetFiles("D:\\UPLOADS", "*.txt") 
           .Select(Path.GetFileName) 
           .ToArray(); 

我用上面的方法来获取文本文件。

for (int i = 0; i < excelfiles.Length; i++) 
     { 
      dt.Rows.Add(i, excelfiles[i], File.ReadAllText(textfiles[i]) , "24/12/16", "3.42pm", 837482, "Approve/Reject"); 
     } 

但是我得到以下错误。

Could not find file 'C:\Program Files (x86)\IIS Express\[2016-12-30] lololololol.xlsm(desc).txt'.

我的路径表示为d:\ UPLOADS

这里是完整的代码。

protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    private string[] excelfiles = Directory.GetFiles("D:\\UPLOADS", "*.xlsm") 
           .Select(Path.GetFileName) 
           .ToArray(); 
    private string[] textfiles = Directory.GetFiles("D:\\UPLOADS", "*.txt") 
           .Select(Path.GetFileName) 
           .ToArray(); 




    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     GridView1_SelectedIndexChanged(sender, e); 
    } 

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("ExcelID", typeof(int)); 
     dt.Columns.Add("excelName", typeof(string)); 
     dt.Columns.Add("excelDescription", typeof(string)); 
     dt.Columns.Add("date", typeof(string)); 
     dt.Columns.Add("time", typeof(string)); 
     dt.Columns.Add("empID", typeof(int)); 
     dt.Columns.Add("firstApproval", typeof(string)); 

     for (int i = 0; i < excelfiles.Length; i++) 
     { 
      dt.Rows.Add(i, excelfiles[i], File.ReadAllText(textfiles[i]) , "24/12/16", "3.42pm", 837482, "Approve/Reject"); 
     } 


     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 

感谢

+0

是的,有很多方法可以做到这一点。你有没有尝试做点什么? – Steve

+0

请仔细阅读:http://stackoverflow.com/help/how-to-ask – bit

回答

2

加载文本文件时,从整个文件名中删除路径D:\ UPLOADS。所以当你试图读取文件名的内容时,你没有任何路径给File.ReadAllText

这将强制该方法尝试从当前进程目录(... \ IIS Express ...)读取哪里没有这样的文件。

你需要一个路径检索您的文件的内容,所以你可以删除的LINQ Select部分,只留下....

private string[] textfiles = Directory.GetFiles("D:\\UPLOADS", "*.txt"); 
1

有几个API,您会发现在这种情况下,相关的。

Directory.GetFiles()返回文件夹中所有文件的完整路径数组。

File.ReadAllText()以字符串形式返回文件的所有内容。

使用这两个你应该是绝对能够实现你所要求的功能。

相关问题