C#每天抄一点(30):MP3播放器
28 Oct 2011关于 File和Fileinfo
File 类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件。也可将 File 类用于获取和设置文件属性或有关文件创建、访问及写入操作的 DateTime 信息。
许多 File 方法在您创建或打开文件时返回其他 I/O 类型。可以使用这些其他类型进一步处理文件。
由于所有的 File 方法都是静态的,所以如果只想执行一个操作,那么使用 File 方法的效率比使用相应的 FileInfo 实例方法可能更高。所有的 File 方法都要求当前所操作的文件的路径。
File 类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象,可考虑改用 FileInfo 的相应实例方法,因为并不总是需要安全检查。
File类的任何公共静态成员都是线程安全的,但不保证所有实例成员都是线程安全的.
FileInfo 类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件。如果打算多次重用某个对象,可考虑使用 FileInfo 的实例方法,而不是 File 类的相应静态方法,因为并不总是需要安全检查。
FileInfo 类的任何公共静态成员也都是线程安全的,但不保证所有实例成员都是线程安全的。
Fileinfo可序列化,File不行。
FileInfo需要new ,File不用new。
DirectoryInfo
公开用于创建、移动和枚举目录和子目录的实例方法。 此类不能被继承。
.NET内建类型中提供了FileInfo和DirectoryInfo俩个类型,分别用来操作文件和文件夹,有别于File和Directory类型,FileInfo和DirectoryInfo主要功能在于操作文件和文件夹在文件系统中的结构,完成诸如:创建,复制,读取信息,移动,判断是否存在,删除等功能。
Remove和RemoveAt
有两种方法可以删除DataRow,Delete方法和Remove方法和RemoveAt方法。其区别是Delete方法实际上不是从DataTable中删除掉一行,而是将其标志为删除,仅仅是做个记号,而Remove方法则是真正的从DataRow中删除一行,RemoveAt方法是根本行的索引来删除。
要移除的元素的从零开始的索引。
002 * 由SharpDevelop创建。
003 * 用户: Lazynight
004 * 日期: 2011/10/28
005 * 时间: 6:35
006 *
007 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
008 */
009 using System;
010 using System.Collections.Generic;
011 using System.Drawing;
012 using System.Windows.Forms;
013 using System.IO;
014 namespace Lazy30_MP3播放器
015 {
016 public partial class MainForm : Form
017 {
018 private string[] Lazy_list=new String[5000];
019 //字符串数组
020 private int Lazy_num;
021 //MP3歌曲数量
022 public MainForm()
023 {
024 InitializeComponent();
025 }
026 void Button1Click(object sender, EventArgs e)
027 {
028 openFileDialog1.Filter=“*.mp3|*.mp3″;
029 if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
030 //调用打开对话框
031 {
032 string path=this.openFileDialog1.FileName;
033 //获取文件路径
034 FileInfo f=new FileInfo(path);
035 //初始化 FileInfo 类的新实例,它作为文件路径的包装
036 AddFile(f.FullName);
037 //获取文件的完整目录
038 string Lazy_str =Convert.ToString(Lazy_num);
039 for(int i=1;i<5-Lazy_str.Length;i++)
040 Lazy_str+=“ “+f.Name;
041 //统一化显示文件名,加序号
042 this.listBox1.Items.Add(Lazy_str);
043 //在列表框显示添加的歌曲
044 }
045 }
046
047 void Button2Click(object sender, EventArgs e)
048 {
049 folderBrowserDialog1.SelectedPath=“d:\\”;
050 //设置初始打开路径
051 folderBrowserDialog1.ShowNewFolderButton=true;
052 //显示"新建文件夹"按钮;
053 folderBrowserDialog1.Description=“请选择音乐文件目录”;
054 folderBrowserDialog1.ShowDialog();
055 //显示对话框
056 AddFiles(folderBrowserDialog1.SelectedPath,listBox1);
057 //调用AddFiles方法
058 }
059
060 void Button3Click(object sender, EventArgs e)
061 {
062 if(listBox1.SelectedIndex>=)
063 {
064 DelFile(listBox1.SelectedIndex);
065 //调用DelFile方法
066 listBox1.Items.RemoveAt(listBox1.SelectedIndex);
067 //删除listbox对应记录
068 }
069 }
070 public void AddFile(string path)
071 //自定义AddFile方法
072 {
073 if(Lazy_num<5000)
074 {
075 Lazy_num++;
076 //累加MP3数目
077 Lazy_list[Lazy_num]=path;
078 //MP3文件地址数组
079 }
080 }
081 private void AddFiles(string path,ListBox listbox1)
082 //自定义AddFiles方法
083 {
084 DirectoryInfo dir=new DirectoryInfo(path);
085 //在指定的路径中初始化 DirectoryInfo 类的新实例
086 foreach(FileInfo f in dir.GetFiles(“*.mp3″))
087 //获取当前目录的MP3文件列表
088 {
089 AddFile(f.FullName);
090 string Lazy_str =Convert.ToString(Lazy_num);
091 Lazy_str+=“ “+f.Name;
092 this.listBox1.Items.Add(Lazy_str);
093 }
094 foreach(DirectoryInfo f in dir.GetDirectories())
095 {
096 AddFiles(f.FullName,listBox1);
097 }
098 }
099 public void DelFile(int selectNum)
100 //自定义DelFile方法
101 {
102 for(int i=selectNum;i<Lazy_num-1;i++)
103 {
104 Lazy_list[i]=Lazy_list[i+1];
105 }
106 Lazy_num–;
107 }
108 public void PlaySong(int selectNum)
109 {
110 axWindowsMediaPlayer1.URL=Lazy_list[selectNum];
111 }
112
113 void ListBox1SelectedIndexChanged(object sender, EventArgs e)
114 {
115 int SelectOne;
116 if(listBox1.SelectedIndex<)
117 SelectOne=1;
118 else
119 SelectOne=listBox1.SelectedIndex+1;
120 if(listBox1.Items.Count<)
121 listBox1.SelectedIndex=;
122 PlaySong(SelectOne);
123 }
124 }
125 }
转载请注明:于哲的博客 » C#每天抄一点(30):MP3播放器