私は音楽プレーヤーを作っています。 2つの形式があります。 1つはあなたが音楽を演奏する主要な領域です。 2番目のフォームには、必要なmp3を選択するCheckedListBoxがあります。 ボタンをクリックすると、その選択が.txtファイルに保存されるので、最初のフォームでそのファイルにアクセスできます。ここで、ファイルを見つけるために音楽プレーヤーのパスに文字列を挿入します。ファイルが既に存在する場合にファイルを上書きする方法
これは私の2番目のフォームのコードで、選択した曲を.txtファイルに保存します。
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();
}
問題は、私は、プログラムを閉じて、もう一度それを開くたびに、私は.txtファイルを消去/書き換えができない、です。既存のファイルに追加するだけです。私が正しいことをしていないことはありますか?
ここは私のストリームリーダ/ライターコードです。私はあまりにも実行した後、それを閉じてかなり確信している、おそらく誰かが間違っているかを把握することができます
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();
}
}
}
}
ファイルが存在する場合は、単に削除しないでください。 – JohanP
あなたの 'songRecord.writeRecord'は何をしていますか?ファイルを消去する前にファイルを開いている場合は、既に現在のテキストが読み込まれている可能性があります。 – Rob
APIドキュメントによると、 'File.WriteAllText'は内容を置き換えるべきです。そうでない場合は、バグレポートを提出してください。 –