[英]C# Streamwriter help
嗨,我需要一點幫助。 我需要我的Streamwriter糾正我從Directory.Getfiles調用中獲得的文件名
string lines = (listBox1.Items.ToString());
string sourcefolder1 = textBox1.Text;
string destinationfolder = (@"C:\annqcfiles");
string[] files = Directory.GetFiles(sourcefolder1, lines + "*.ann");
foreach (string listBoxItem in listBox1.Items)
{
Directory.GetFiles(sourcefolder1, listBoxItem + "*.txt");
StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt");
}
它完美地創建了文件,只是不向文件添加任何內容。 我真正想要的只是在getfiles結果中找到的文件的文件名。
感謝您的任何建議。
foreach (string listBoxItem in listBox1.Items)
{
using (StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt"))
{
foreach (string fileName in Directory.GetFiles(sourcefolder1, listBoxItem + "*.txt"))
{
output.WriteLine(fileName);
}
}
}
由於GetFiles
返回一個string[]
不使用StreamWriter
在所有 -只是
File.WriteAllLines(path, files);
其中files
是要寫入的路徑的string[]
,而path
是目標文件。
兩件事情。 首先,您實際上需要將數據寫入StreamWriter,其次您需要確保關閉StreamWriter,以便將其實際刷新到文件中。
嘗試這個:
foreach (string listBoxItem in listBox1.Items)
{
String[] filesInFolder Directory.GetFiles(sourcefolder1, listBoxItem + "*.txt");
using(StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt"))
{
foreach(string filename in filesInFolder)
{
output.Write(filename);
}
}
}
using
語句確保當執行通過using塊時,關閉StreamWriter。
另外,如果這就是您要寫入文件的全部內容,則可以查看Files.WriteAllLines(...)方法。
您必須關閉StreamWriter.
或者將您的StreamWriter包裝在using語句中,這將自動處理並關閉您的流。
這背后的原因是您的流會將輸出保留在緩沖區中,並且僅在以下情況下將其寫入文件:
-達到一定的閾值
-您顯式調用沖洗
-關閉或處理流
您應該將streamwriter封裝在using語句中,這將刷新並關閉streamwriter
using(StreamWriter output = new StreamWriter(destinationfolder + "\\" + listBoxItem + ".txt"))
{
//Any code that writes in output
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.