как перезаписать файл, если он уже существует?

<p>я делаю музыкальный плеер. имеет 2 формы; одна из них - главная область, где вы играете музыку. во второй форме есть checkedlistbox, в котором вы выбираете нужные mp3-файлы . когда я нажимаю кнопку, она сохраняет выбор в файле .txt, поэтому я могу получить к ним доступ в первой форме, где я помещу строки в пути для музыкального проигрывателя, чтобы найти файлы.</p><p>это код моей второй формы, где я сохраняю выбранные песни в текстовые файлы .txt.</p><pre><code>private void selectbtn\_click(object sender, eventargs e) { if (file.exists(@"c:\users\me\desktop\jam\_machine\jams\record.txt")) { file.writealltext(@"c:\users\me\desktop\jam\_machine\jams\record.txt", string.empty); } string[] checkedtitles = new string[checkedlistbox1.checkeditems.count]; for (int ii = 0; ii < checkedlistbox1.checkeditems.count; ii++) { checkedtitles[ii] = checkedlistbox1.checkeditems[ii].tostring(); } string selectedsongs = string.join(environment.newline, checkedtitles); songrecord.writerecord(selectedsongs); //i initialised the class containing streamwriter/reader, and called it songrecord this.close(); } </code></pre><p>проблема в том, что всякий раз, когда я закрываю программу и открываю ее снова, я не могу переписать/очистить файл .txt. это просто добавляет к существующему файлу. есть что-то, что я не правильно делаю?</p><p>вот мои потоковые/пишущие коды. я почти уверен, что закрыл его и после запуска, но, возможно, кто-то может понять, что не так:</p><pre><code>namespace songss { class datarecord { public void writerecord(string line) { streamwriter sw = null; try { sw = new streamwriter(@"c:\users\me\desktop\jam\_machine\record.txt", true); sw.writeline(line); } catch (filenotfoundexception) { console.writeline("error: file not found."); } catch (ioexception) { console.writeline("error: io"); } catch(exception) { throw; } finally { if (sw != null) sw.close(); } } public void readrecord() { streamreader sr = null; string myinputline; try { sr = new streamreader(@"c:\users\me\desktop\jam\_machine\record.txt"); while ((myinputline = sr.readline()) != null) ; //readline reads whole line console.writeline(myinputline); } catch (filenotfoundexception) { console.writeline("error: file not found"); } catch(ioexception) { console.writeline("error: io"); } catch (exception) { throw; } finally { if (sr != null) sr.close(); } } } } </code></pre>

<h2>writealltext</h2><p> <a href="https://msdn.microsoft.com/en-us/library/ms143375(v=vs.110).aspx">file.writealltext</a> должен делать то, что вы хотите.</p><blockquote> <p>создает новый файл, записывает указанную строку в файл, а затем закрывает файл если целевой файл уже существует, он перезаписывается.</p> </blockquote><h2>streamwriter</h2><p>класс <a href="https://msdn.microsoft.com/en-us/library/36b035cb(v=vs.110).aspx">streamwriter</a> также имеет возможность перезаписать/добавить:</p><blockquote> <p>инициализирует новый экземпляр класса streamwriter для указанного файл с использованием кодировки по умолчанию и размера буфера. если файл существует, его можно перезаписать или добавить.</p> </blockquote><pre><code>public streamwriter( string path, bool append ) </code></pre><p>пример:</p><pre><code>using (streamwriter writer = new streamwriter("test.txt", false)){ writer.write(texttoadd); } </code></pre><p>глядя на свой код, вы передаете <code>true</code>, что означает добавление.</p><pre><code>sw = new streamwriter(@"c:\users\me\desktop\jam\_machine\record.txt", true); sw.writeline(line); </code></pre><h2>.net compact framework</h2><p>если вы застряли в версии .net, которая ничего не поддерживает (например, компактная структура), вы также можете реализовать <code>writealltext</code> самостоятельно:</p><pre><code>static void writealltext(string path, string txt) { var bytes = encoding.utf8.getbytes(txt); using (var f = file.open(path, filemode.create)) { f.write(bytes, 0, bytes.length); } } </code></pre>

<p>перейдите по этой ссылке для решения, предоставленного microsoft: ( <a href="https://msdn.microsoft.com/en-us/library/system.io.file.appendtext(v=vs.110).aspx">https://msdn.microsoft.com/en-us/library/system.io.file.appendtext(v=vs.110).aspx</a> )</p><p>вот код для добавления существующего файла:</p><pre><code>streamwriter writer = file.appendtext(filepath); writer.writeline(content); writer.close(); </code></pre>

<p>использовать этот</p><pre><code>file.writealltext(@"c:\users\me\desktop\jam\_machine\jams\record.txt", line); </code></pre><p>вместо </p><pre><code>sw = new streamwriter(@"c:\users\me\desktop\jam\_machine\record.txt", true); sw.writeline(line); </code></pre>