首页 > 编程语言 >C#文件操作

C#文件操作

时间:2023-12-29 16:44:23浏览次数:194  
标签:文件 TreeNode string listView1 C# aItem Directory 操作 dirNode

实验四 文件操作
一、实验目的

  1. 掌握窗口控件的使用方法;
  2. 掌握文件系统的操作方法、File 类和 Directory类的使用。
    二、实验要求
    根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。
    三、实验内容
    1.编写一个简易的文件管理器,通过本次实验,练习 TreeView、ListView 和
    SplitContainer 控件的使用,同时熟悉 C#文件系统的操作方法以及 File 类和 Directory类的使用。
    (1)新建 windows 应用程序。
    (2)将窗体 Form 的 Text 属性设置为“简易的文件管理器”。
    (3)窗体上添加 SplitContainer、TreeView、ListView 控件,设置属性。将 TreeView 控
    件的 Dock 属性设置为 Left,ListView 控件的 Dock 属性设置为 Fill,MultiSelect 属性设置为False,View 属性设置为 List。
    (4)在 Form1.cs 中,添加对命名空间 using System.IO 的引用。
    (5)在 Form1 的构造函数中添加代码:
    public Form1()
    {
    InitializeComponent();
    TreeNode myComputerNode = new TreeNode("我的电脑"); treeView1.Nodes.Add(myComputerNode); listViewShow(myComputerNode);
    }
    (6)编写 ListView 控件的方法 listViewShow(TreeNode dirNode)。
    private void listViewShow(TreeNode dirNode)
    {
    listView1.Clear();
    if (dirNode.Parent == null)
    {
    foreach (string DrvName in Directory.GetLogicalDrives())
    {
    ListViewItem aItem = new ListViewItem(DrvName);
    listView1.Items.Add(aItem);
    }
    }
    else
    {
    foreach (string DirName in Directory.GetDirectories((string)dirNode.Tag))
    {
    ListViewItem aItem = new ListViewItem(DirName);
    listView1.Items.Add(aItem);
    }
    foreach (string fileName in Directory.GetFiles((string) dirNode.Tag))
    {
    ListViewItem aItem=new ListViewItem(fileName);
    listView1.Items.Add(aItem);
    }
    }
    }
    (7)编写 listViewShow 的重载方法。
    private void listViewShow(string dirName)
    {
    listView1.Clear();
    try
    {
    foreach (string DirName in Directory.GetDirectories(dirName))
    {
    ListViewItem aItem = new ListViewItem(DirName);
    listView1.Items.Add(aItem);
    }
    foreach (string fileName in Directory.GetFiles(dirName))
    {
    ListViewItem aItem = new ListViewItem(fileName);
    listView1.Items.Add(aItem);
    }
    }
    catch
    {
    }
    }
    (8)编写 DirTreeShow(TreeNode dirNode)方法。
    private void DirTreeShow(TreeNode dirNode)
    {
    try
    {
    if (dirNode.Nodes.Count == 0)
    {
    if (dirNode.Parent == null)
    {
    foreach (string DrvName in Directory.GetLogicalDrives())
    {
    TreeNode aNode= new TreeNode(DrvName);
    aNode.Tag=DrvName;
    dirNode.Nodes.Add(aNode);
    }
    }
    else
    {
    foreach(string DirName in Directory.GetDirectories((string)dirNode.Tag))
    {
    TreeNode aNode=new TreeNode(DirName);
    aNode.Tag=DirName;
    dirNode.Nodes.Add(aNode);
    }
    }
    }
    }
    Catch
    {
    }
    }
    (9)编写 TreeView 控件的 AfterSelect 事件代码。
    private void treeView1_AfterSelect_1(object sender, TreeViewEventArgs e)
    {
    listViewShow(e.Node);
    DirTreeShow(e.Node);
    }
    (10)编写 ListView 控件的 DoubleClick 事件代码。
    private void listView1_DoubleClick(object sender, EventArgs e)
    {
    foreach (int listIndex in listView1.SelectedIndices)
    {
    listViewShow(listView1.Items[listIndex].Text);
    }
    }
    (11)单击启动调试工具,运行结果参见下图。

注意:编写代码过程中,不可盲目照抄,仔细思考,加深内容的理解和使用。
四、实验总结
注:本部分写本次实验过程中出现的问题、如何解决、注意事项、以及自己的经验体会。
第一次尝试失败了,没有出来我的电脑的目录结构。
Directory.GetFiles(path);
返回的是一个string类型的数组,是包含path路径下的每个文件的路径数组。
var files = Directory.GetFiles()相当于string [] files = Directory.GetFiles(path)
刚开始我是直接全复制的代码,因为我的项目不是新建的,所以一些名字的命名不太一样,就失败了。还有一个错误是刚开始属性设置的不对。
代码不可以直接照抄,要理解了代码的逻辑,然后根据自己的理解去放到项目里。

标签:文件,TreeNode,string,listView1,C#,aItem,Directory,操作,dirNode
From: https://www.cnblogs.com/yzx-sir/p/17935217.html

相关文章

  • 南阳 南阳科技职业学院 外文名Nanyang Vocational College of science and technolo
    南阳科技职业学院是2020年经河南省政府批准成立、教育部备案的公办专科层次全日制普通高校,由南阳市人民政府和邓州市人民政府共同举办。 [3]学校总规划面积2000余亩,现占地面积1185亩,建筑面积46.3万平方米;学院开设25个专业;现有教职工706人。  南洋理工大学(NanyangTechnolog......
  • 文心一言 VS 讯飞星火 VS chatgpt (167)-- 算法导论13.1 7题
    七、用go语言,试描述一棵含有n个关键字的红黑树,使其红色内部结点个数与黑色内部结点个数的比值最大。这个比值是多少?该比值最小的树又是怎样呢?比值是多少?文心一言:红黑树是一种自平衡的二叉查找树,它满足以下性质:每个节点或是红色,或是黑色。根节点是黑色。每个叶节点(NIL或空节......
  • ECharts 是一个使用 JavaScript 实现的开源可视化库¹²³⁴。它可以流畅地运行在 PC
    ECharts是一个使用JavaScript实现的开源可视化库¹²³⁴。它可以流畅地运行在PC和移动设备上,兼容当前绝大部分浏览器(如IE8/9/10/11,Chrome,Firefox,Safari等)²³⁴。ECharts底层依赖轻量级的Canvas类库ZRender¹²³,提供直观,生动,可交互,可高度个性化定制的数据可视化图表¹......
  • P9995 [Ynoi2000] rspcn 题解
    思路比较典的ODT题目。发现排序是一个非常有性质的操作。它对区间的更改与颜色段均摊差不多。那么我们可以想到用ODT来维护这一整个序列。具体的,区间排序操作可以用ODT维护每次排序产生的段,每段用线段树维护排序后的结果。每次修改就可以进行线段树的分裂与合并。如......
  • git删除大文件提交记录
    由于git不免费支持大文件的推送,但是很多不知情的情况下,不小心提交了大文件,导致无法push时,总是失败。为了不影响其它小文件的推送,需要删除大文件的提交记录。1.根据git客户端推送的报错信息,复制对应的ID值在gitbash上执行,命令如下:gitrec-list--objects--all|grep上述复制......
  • Springboot集成Nacos
    1.添加依赖com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery2.2.9.RELEASEcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-config2.2.9.RELEASE2.注册中心1、把Nacos的Ip和端口配置配置文件中2、在启动类上加上@EnableDiscoveryClient注解3、同一类的服务可......
  • Vite + ESBuild error: No loader is configured for ".node" files: node_modules/fs
    Vite+ESBuilderror:Noloaderisconfiguredfor".node"files:node_modules/fsevents/fsevents.nodeAddfseventstoyouroptimizeDepsexcludeinyourvite.config.jsfile:optimizeDeps:{exclude:["fsevents"]},import{defineConfig......
  • The 2023 ICPC Asia Shenyang Regional Contest
    https://codeforces.com/gym/104869C.SwissStage对着图片抄最短路,一开始BO3搞成3了其实是2改半天。E.SheepEatWolves看到100认为不太能贪心,不用性质就能dpbfs做,状态是\(100*100*2\)的(这边剩几只狼几只羊,人在哪边),转移枚举狼羊数量的时候保证船两边的都别满足......
  • Kubernetes-集群Rook-Ceph快照
    部署条件Rookofficiallysupportsv1snapshotsforKubernetesv1.20+.Installthesnapshotcontrollerandsnapshotv1CRDasrequired.Moreinfocanbefoundhere.安装快照控制器和CRD:安装快照CRD:gitclonehttps://github.com/kubernetes-csi/external-snapshotter.git......
  • storm—A5cpu test
    cpu_clk_rst_test 用例描述:1、先读取一下初始值,checkRAWvalue2、softwarerest后,checkvalue3、poweronreset后检查,checkvalue这段代码是用C语言编写的,其中包含了嵌入式汇编代码。它的作用是从系统控制寄存器中读取值,并将其存储到内存中的特定位置。具体来说,让我们......