我想将文本存储在字符串数组中,并将其遍历到数据网格视图表。有什么方法可以做到吗
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 :(得分:2)
加载文本文件时,将从完整文件名中删除路径D:\ UPLOADS。因此,当您尝试读取文件名的内容时,您没有任何路径可以提供给File.ReadAllText
。
这会强制该方法尝试从当前进程目录(... \ IIS Express ...)读取没有此类文件的方法。
您需要该路径来检索文件内容,因此您可以删除Linq Select
部分并只留下....
private string[] textfiles = Directory.GetFiles("D:\\UPLOADS", "*.txt");
答案 1 :(得分:1)
在这种情况下,您会发现有几个API。
Directory.GetFiles()
返回文件夹中所有文件的完整路径数组。
File.ReadAllText()
以字符串形式返回文件的所有内容。
使用这两个,您应该能够实现所请求的功能。