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

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