C#如何打开并读取usb的文件目录
下面我通过一个小例子并结合一段代码片段给大家展示下,有需要的朋友可以来借鉴下。
界面上拖一个button和treeview ,运行的时候直接插入优盘,单机按钮就会出现目录文件。不过只能在u盘插入,U盘拔出时,才能接收到信息。
1.[C#]代码
usingSystem;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.IO;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
namespaceusbText
{
publicpartialclassForm1:Form
{
DriveInfoTdriver=null;
publicForm1()
{
InitializeComponent();
}
protectedoverridevoidWndProc(refMessagem)
{
if(m.Msg==0x0219)//WM_DEVICECHANGE
{
switch(m.WParam.ToInt32())
{
case0x8000://DBT_DEVICEARRIVAL
{
MessageBox.Show("设备插入");
string[]dirs=Environment.GetLogicalDrives();//取得所有的盘符
foreach(stringdirindirs)
{
Tdriver=newDriveInfo(dir);
if(Tdriver.DriveType==DriveType.Removable)
{
{
while(Tdriver.IsReady==false)
{
Thread.Sleep(500);
}
try
{
stringPSTR="";
PSTR+="磁盘名称:"+Tdriver.Name+"\r\n";
PSTR+="磁盘卷标:"+Tdriver.VolumeLabel+"\r\n";
PSTR+="文件系统:"+Tdriver.DriveFormat+"\r\n";
PSTR+="剩余大小:"+Tdriver.AvailableFreeSpace.ToString()+"\r\n";
PSTR+="总体容量:"+Tdriver.TotalSize.ToString()+"\r\n";
PSTR+="总体容量:"+Tdriver.RootDirectory.ToString()+"\r\n";
MessageBox.Show(PSTR);
}
catch
{
MessageBox.Show("error");
}
}
}
}
break;
}
case0x8004://DBT_DEVICEREMOVECOMPLETE
{
MessageBox.Show("设备拔出");
break;
}
}
}
base.WndProc(refm);
}
privatevoidAddToTreeView(TreeNodenode)
{
treeView1.Nodes.Add(node);
treeView1.Refresh();
}
internalvoidLoadFolderFileList(stringpath,TreeNodenodes)
{
string[]dirs=Directory.GetDirectories(path);
string[]files=Directory.GetFiles(path);
for(inti=0;i<dirs.Length;i++)
{
string[]info=newstring[4];
DirectoryInfodi=newDirectoryInfo(dirs[i]);
TreeNodenode=newTreeNode(di.Name);
node.Tag=di.FullName;
try
{
if(di.GetDirectories().Length>0||di.GetFiles().Length>0)
{
LoadFolderFileList(di.FullName,node);
}
else
{
continue;
}
}
catch
{
continue;
}
nodes.Nodes.Add(node);
}
for(inti=0;i<files.Length;i++)
{
FileInfofi=newFileInfo(files[i]);
TreeNodenode=newTreeNode(fi.Name);
node.Tag=fi.FullName;
nodes.Nodes.Add(node);
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(Tdriver!=null)
{
TreeNodenode=newTreeNode();
LoadFolderFileList(Tdriver.RootDirectory.ToString(),node);
treeView1.Nodes.Add(node);
}
}
}
}
通过以上代码可以实现打开并读取usb的文件目录,希望大家能够喜欢。