2009-04-27 4 views
1

HI all、 私の音楽プレーヤーで再生された曲の年代順を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を作成するときに2番目の引数としてtrueを渡す必要があります。
  • ファイルにデータを書き込んだ後、明示的にStreamWriterを閉じるか、ファイルが空になります。
  • ファイルを閉じた後、ファイルに書き込むことはできません。もしあなたがそれを再開することができます。
+0

HI Jahedbozorgan、 私はファイルを閉じて、それは常に空であり、あなたのコーンスニペットで問題を解決するので、うまくいけます。 ありがとうございます。 – JayJay

1

それは更新にファイルを失敗だ場合は、例えば、コンストラクタでアペンドパラメータを設定したいことがあります。

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

SelectedIndexChangedイベントをトリガするために失敗しています場合は、反映するために質問を更新してくださいその...

1

ます。private void listBox1_SelectedIndexChanged(オブジェクト送信者、EventArgsの電子)

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

    foreach (object o in listBox1.SelectedItems) 
      sw.WriteLine(DateTime.Now + " - " + o.ToString());   
    sw.close(); 
} 
関連する問題