我不能似乎能夠一個StreamReader使用後刪除文件,具有C#無法刪除文件
「文件無法訪問,因爲文件正在使用」
C#中的錯誤。
我可能會錯過什麼,但我不知道是什麼,這裏是代碼:
fileEntries = from fullFilename
in Directory.EnumerateFiles(@"Data\csv\pending")
select Path.GetFileName(fullFilename);
i = 1;
foreach (string file in fileEntries)
{
if(i == 1)
{
folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Data\csv\done";
using (System.IO.FileStream fs = System.IO.File.Create(folder + @"\create-user.csv"))
{
}
using (System.IO.StreamWriter files = new System.IO.StreamWriter(folder + @"\create-user.csv", true))
{
files.WriteLine(",; prenom; nom; username; pasword; email; question; reponse; GroupID");
}
string curfile = @"\create-user-archive.csv";
if(!(File.Exists(folder + curfile)))
{
using (System.IO.StreamWriter files = new System.IO.StreamWriter(folder + @"\create-user-archive.csv", true))
{
files.WriteLine(",; prenom; nom; username; pasword; email; question; reponse; GroupID");
}
}
}
folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Data\csv\pending";
sb = new StringBuilder();
filef = new System.IO.StreamReader(folder + @"\create-user-" + i + ".csv");
line = filef.ReadLine();
while ((line = filef.ReadLine()) != null)
{
sb = new StringBuilder();
sb.AppendLine(line.Substring(0, line.Length));
folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Data\csv\done";
using (System.IO.StreamWriter files = new System.IO.StreamWriter(folder + @"\create-user.csv", true))
{
files.WriteLine(",; " + sb.ToString().Split(';')[1] + ";" + sb.ToString().Split(';')[2] + ";" + sb.ToString().Split(';')[1] + "." + sb.ToString().Split(';')[2] + ";" + GenerateToken(6) + ";" + sb.ToString().Split(';')[3] + ";" + "1" + ";" + "1");
}
folder = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\Data\csv\done";
using (System.IO.StreamWriter files = new System.IO.StreamWriter(folder + @"\create-user-archive.csv", true))
{
files.WriteLine(",; " + sb.ToString().Split(';')[1] + ";" + sb.ToString().Split(';')[2] + ";" + sb.ToString().Split(';')[1] + "." + sb.ToString().Split(';')[2] + ";" + GenerateToken(6) + ";" + sb.ToString().Split(';')[3] + ";" + "1" + ";" + "1");
}
}
i++;
sourceFile = System.IO.Path.Combine(@"Data\csv\pending", file);
File.Delete(sourceFile);
}
不應文件停止正在使用中的StreamReader完成後?我嘗試使用一個函數,等待文件解鎖以刪除文件,但它是無限的,這意味着有一個永無止境的過程,我必須停止,但我看不到哪一個。
你在哪裏關閉'filef'? – EpicKip
「流媒體閱讀器完成後,文件是否應該停止使用?」計算機應該如何知道你已經完成了使用該文件?=!你需要在閱讀器上調用'Close'。這是標誌 –
如果您不是多次打開和關閉相同的文件,並以各種方式引用相同的文件和文件夾,那麼您會更容易看到發生了什麼。例如,不是爲了不同的事情重用通用的'folder'變量,而是創建一個名爲'pendingFolder'來引用'「Data \ csv \ pending」',另一個名爲'doneFolder'來引用''Data \ csv \完成「'。設置它們的值_once_,然後實際使用這些變量,而不是稍後對相同的路徑進行硬編碼。 – Rhumborl