下面我通过一个小例子并结合一段代码片段给大家展示下,有需要的朋友可以来借鉴下。
界面上拖一个 button 和treeview ,运行的时候直接插入优盘,单机按钮就会出现目录文件。不过只能在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("设备插入"); 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 += "磁盘卷标:" + 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; } case 0x8004://DBT_DEVICEREMOVECOMPLETE { MessageBox.Show("设备拔出"); 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); } } } }
通过以上代码可以实现打开并读取usb的文件目录,希望大家能够喜欢。
问题内容: 如何打开.txt文件并读取由输入或空格分隔的数字到数组列表中? 问题答案: 读取文件,将每一行解析为整数并存储到列表中:
问题内容: 我需要创建一个遍历子目录中所有文件的循环。您能帮我构造我的代码吗? 问题答案: 将RecursiveDirectoryIterator与RecursiveIteratorIterator结合使用。
主要内容:使用 open 函数打开文件,使用流类的构造函数打开文件在对文件进行读写操作之前,先要打开文件。打开文件有以下两个目的: 通过指定文件名,建立起文件和文件流对象的关联,以后要对文件进行操作时,就可以通过与之关联的流对象来进行。 指明文件的使用方式。使用方式有只读、只写、既读又写、在文件末尾添加数据、以文本方式使用、以二进制方式使用等多种。 打开文件可以通过以下两种方式进行: 调用流对象的 open 成员函数打开文件。 定义文件流对象时,通过构造函数打开
我试图简单地读取文本文件的内容并将其存储到数组中,但是: 它给了我一个“打开”的错误: 此检查检测应该解析但不解析的名称。由于动态调度和鸭子类型,这在有限但有用的情况下是可能的。与实例项相比,顶层和类级项得到更好的支持。 谁能解释我做错了什么?谢谢
问题内容: 我有一个根目录目录,其中包含多个子目录,所有子目录均包含文件名data.txt。我想做的是编写一个脚本,该脚本进入“根”目录,然后读取所有子目录并读取子目录中的每个“ data.txt”,然后将每个data.txt文件中的内容写入输出文件。 这是我的代码片段: 我的dosomething()部分-如果仅针对一个文件运行该部分,我已经测试并确认它可以正常工作。我还确认,如果我告诉它打印文
我正在创建一个项目,其中我需要从. java文件中的关键字开始读取特定行。 我将不得不阅读. java文件以获取: 我将如何读取代码中的这两行代码。我应该为此设置regex吗? 我正在使用: 据我所知,Intent关键字在每个文件中都是静态的,因此我可以获得像“Intent”这样的行的开头,但如何仅从大文件中读取这一行和下一行…?