我正在嘗試處理一組文件,我有給定數量的 txt 文件,我目前正在加入 1 個 txt 文件以應用過濾器。從多個文件創建 1 個文件效果很好。但我有 2 個問題和 1 個錯誤,我似乎無法解決。1 - 當我嘗試讀取新創建的文件時出現錯誤,因此我可以應用過濾器。“該進程無法訪問該文件,因為它正被另一個進程使用?!? - 我是以正確或更有效的方式接近這個嗎?我的意思是可以在創建串聯文件之前應用讀取和過濾嗎?我的意思是我仍然需要創建一個新文件,但最好能夠在創建之前應用所有內容,以便文件已經清理并準備好在應用程序外部使用。這是有問題的當前代碼和我在發布文件時的其他嘗試的 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; }我試圖完成的是讀取最?。? 或 3 個 txt 文件和多達 13 個 txt 文件)并應用一些過濾。但我收到此錯誤:“該進程無法訪問該文件,因為它正被另一個進程使用?!?
1 回答

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
您正在使用以下行處理流閱讀器
sr.Dispose();
使用“使用”語句將在流脫離上下文后進行處理。所以刪除 Dispose 行(如果下面不清楚)
- 1 回答
- 0 關注
- 192 瀏覽
添加回答
舉報
0/150
提交
取消