我正在尝试处理一组文件,我有给定数量的 txt 文件,我目前正在加入 1 个 txt 文件以应用过滤器。从多个文件创建 1 个文件效果很好。但我有 2 个问题和 1 个错误,我似乎无法解决。
1 - 当我尝试读取新创建的文件时出现错误,因此我可以应用过滤器。“该进程无法访问该文件,因为它正被另一个进程使用。”
2 - 我是以正确或更有效的方式接近这个吗?我的意思是可以在创建串联文件之前应用读取和过滤吗?我的意思是我仍然需要创建一个新文件,但最好能够在创建之前应用所有内容,以便文件已经清理并准备好在应用程序外部使用。
这是有问题的当前代码和我在发布文件时的其他尝试的 1 条注释行
private DataTable processFileData(string fname, string locs2 = "0", string effDate = "0", string items = "0")
{
DataTable dt = new DataTable();
string fullPath = fname;
try
{
using (StreamReader sr = new StreamReader(File.OpenRead(fullPath)))
//using (StreamReader sr = new StreamReader(File.Open(fullPath,FileMode.Open,FileAccess.Read, FileShare.Read)))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
if (!String.IsNullOrWhiteSpace(line))
{
string[] headers = line.ToUpper().Split('|');
while (dt.Columns.Count < headers.Length)
{
dt.Columns.Add();
}
string[] rows = line.ToUpper().Split('|');
DataRow dr = dt.NewRow();
for (int i = 0; i < rows.Count(); i++)
{
dr[i] = rows[i];
}
dt.Rows.Add(dr);
}
}
//sr.Close();
sr.Dispose();
}
string cls = String.Format("Column6 NOT LIKE ('{0}')", String.Join("','", returnClass()));
dt.DefaultView.RowFilter = cls;
return dt;
}
catch (IOException ex)
{
Console.WriteLine(ex.Message);
return dt;
}
我试图完成的是读取最小(2 或 3 个 txt 文件和多达 13 个 txt 文件)并应用一些过滤。但我收到此错误:“该进程无法访问该文件,因为它正被另一个进程使用。”
慕容3067478
相关分类