我正在尝试处理一组文件,我有给定数量的 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 文件)并应用一些过滤。但我收到此错误:“该进程无法访问该文件,因为它正被另一个进程使用。”
1 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
您正在使用以下行处理流阅读器
sr.Dispose();
使用“使用”语句将在流脱离上下文后进行处理。所以删除 Dispose 行(如果下面不清楚)
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消