2009-04-27 43 views
1

HI全部, 我希望保存在我的音樂播放器播放的歌曲的時間順序file.txt中。 我想這個代碼片段,但不工作:將ListBox_SelectedItem保存到file.txt

StreamWriter sw = new StreamWriter(@"c:\Media PlayList\List.txt"); 

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 

    { 
     wmp.URL = Convert.ToString(listBox1.SelectedItem); 

foreach (object o in listBox1.SelectedItems) 

     { 
       sw.WriteLine(DateTime.Now + " - " + o.ToString());   
     } 
    } 

我如何存儲歌曲:

private List<string> GetFolder(string Folder) 
    { 

     string filena; 
     DirectoryInfo dir = new DirectoryInfo(Folder); 
     FileInfo[] files = dir.GetFiles("*.mp3", SearchOption.AllDirectories); 

     List<string> str = new List<string>(); 

     foreach (FileInfo file in files) 
     { 
      str.Add(file.FullName); } 
    } 


private void Form2_Load(object sender, EventArgs e) 
    { 

     List<string> uno = GetFolder(@"D:\\Music\\"); 
     listBox1.DataSource = uno; 
     listBox1.DisplayMember = "uno"; } 

我每次都需要音樂播放器改變歌曲的文件「LIST.TXT」將更新通過listbox.SelectedItem,但我不能更新「List.txt」與我的代碼。 我錯在哪裏? 感謝您的關注。

尼斯問候

編輯:我更新了我的代碼片段,希望這將是明顯的。

回答

1
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Windows.Forms; 

namespace WindowsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      listBox1.DataSource = GetFolder("D:\\Music\\"); 
     } 

     private static List<string> GetFolder(string folder) 
     { 
      List<string> FileList = new List<string>(); 
      foreach (FileInfo file in new DirectoryInfo(folder).GetFiles("*.mp3", SearchOption.AllDirectories)) 
       FileList.Add(file.FullName); 
      return FileList; 
     } 

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      StreamWriter sw = new StreamWriter("c:\\Media PlayList\\List.txt", true); 
      wmp.URL = Convert.ToString(listBox1.SelectedItem); 
      foreach (object o in listBox1.SelectedItems) 
       sw.WriteLine(DateTime.Now + " - " + o); 
      sw.Close(); 
     } 
    } 
} 

上述代碼將爲您完成工作。備註:

  • 如果您想追加到該文件,您應該在創建StreamWriter時傳遞true作爲第二個參數。
  • 將數據寫入文件後,您應該明確關閉StreamWriter,否則文件將爲空。
  • 關閉文件後,您不能再寫入文件。如果你想要,你可以重新打開它。
+0

HI Jahedbozorgan, 這工作很好,事實上我錯了,因爲我關閉了文件,它總是空的,你的圓錐片段我解決了麻煩。 非常感謝。 – JayJay 2009-04-28 01:21:43

1

如果它未能更新文件,你可能要設置的附加參數的構造函數,例如:

StreamWriter sw = new StreamWriter(@"c:\Media PlayList\List.txt", true); 

如果它未能觸發SelectedIndexChanged事件,請更新的問題,以反映那......

1

私人無效listBox1_SelectedIndexChanged(對象發件人,EventArgs的)

{ 
    wmp.URL = Convert.ToString(listBox1.SelectedItem); 

    foreach (object o in listBox1.SelectedItems) 
      sw.WriteLine(DateTime.Now + " - " + o.ToString());   
    sw.close(); 
}