這篇文章主要介紹了用C#語言實現(xiàn)打開并讀取usb的文件目錄,但是實現(xiàn)此功能要注意一點必須在u盤插入才能接受到信息,需要的朋友可以參考下
下面我通過一個小例子并結(jié)合一段代碼片段給大家展示下,有需要的朋友可以來借鑒下。
界面上拖一個 button 和treeview ,運行的時候直接插入優(yōu)盤,單機按鈕就會出現(xiàn)目錄文件。不過只能在u盤插入,U盤拔出時,才能接收到信息。
1.[C#]代碼
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace usbText
- {
- public partial class Form1 : Form
- {
- DriveInfo Tdriver = null;
- public Form1()
- {
- InitializeComponent();
- }
- protected override void WndProc(ref Message m)
- {
- if (m.Msg == 0x0219)//WM_DEVICECHANGE
- {
- switch (m.WParam.ToInt32())
- {
- case 0x8000://DBT_DEVICEARRIVAL
- {
- MessageBox.Show("設(shè)備插入");
- string[] dirs = Environment.GetLogicalDrives(); //取得所有的盤符
- foreach (string dir in dirs)
- {
- Tdriver = new DriveInfo(dir);
- if (Tdriver.DriveType == DriveType.Removable)
- {
- {
- while (Tdriver.IsReady == false)
- {
- Thread.Sleep(500);
- }
- try
- {
- string PSTR = "";
- PSTR += "磁盤名稱:" + Tdriver.Name + "/r/n";
- PSTR += "磁盤卷標(biāo):" + Tdriver.VolumeLabel + "/r/n";
- PSTR += "文件系統(tǒng):" + 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;
- }
- case 0x8004://DBT_DEVICEREMOVECOMPLETE
- {
- MessageBox.Show("設(shè)備拔出");
- break;
- }
- }
- }
- base.WndProc(ref m);
- }
- private void AddToTreeView(TreeNode node)
- {
- treeView1.Nodes.Add(node);
- treeView1.Refresh();
- }
- internal void LoadFolderFileList(string path, TreeNode nodes)
- {
- string[] dirs = Directory.GetDirectories(path);
- string[] files = Directory.GetFiles(path);
- for (int i = 0; i < dirs.Length; i++)
- {
- string[] info = new string[4];
- DirectoryInfo di = new DirectoryInfo(dirs[i]);
- TreeNode node = new TreeNode(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 (int i = 0; i < files.Length; i++)
- {
- FileInfo fi = new FileInfo(files[i]);
- TreeNode node = new TreeNode(fi.Name);
- node.Tag = fi.FullName;
- nodes.Nodes.Add(node);
- }
- }
- private void button1_Click(object sender, EventArgs e)
- {
- if (Tdriver != null)
- {
- TreeNode node = new TreeNode();
- LoadFolderFileList(Tdriver.RootDirectory.ToString(), node);
- treeView1.Nodes.Add(node);
- }
- }
- }
- }
通過以上代碼可以實現(xiàn)打開并讀取usb的文件目錄,希望大家能夠喜歡。
|
新聞熱點
疑難解答