我正在嘗試處理一組文件,我有給定數(shù)量的 txt 文件,我目前正在加入 1 個 txt 文件以應(yīng)用過濾器。從多個文件創(chuàng)建 1 個文件效果很好。但我有 2 個問題和 1 個錯誤,我似乎無法解決。1 - 當(dāng)我嘗試讀取新創(chuàng)建的文件時出現(xiàn)錯誤,因此我可以應(yīng)用過濾器?!霸撨M(jìn)程無法訪問該文件,因?yàn)樗涣硪粋€進(jìn)程使用?!? - 我是以正確或更有效的方式接近這個嗎?我的意思是可以在創(chuàng)建串聯(lián)文件之前應(yīng)用讀取和過濾嗎?我的意思是我仍然需要創(chuàng)建一個新文件,但最好能夠在創(chuàng)建之前應(yīng)用所有內(nèi)容,以便文件已經(jīng)清理并準(zhǔn)備好在應(yīng)用程序外部使用。這是有問題的當(dāng)前代碼和我在發(fā)布文件時的其他嘗試的 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 文件和多達(dá) 13 個 txt 文件)并應(yīng)用一些過濾。但我收到此錯誤:“該進(jìn)程無法訪問該文件,因?yàn)樗涣硪粋€進(jìn)程使用?!?
1 回答

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