C#怎么移动、复制和删除文件
本篇内容主要讲解“C#怎么移动、复制和删除文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么移动、复制和删除文件”吧!
C#高级编程:文件操作类
大家都知道,移动和删除文件或文件夹可以使用FileInfo 和DirectoryInfo类的MoveTo() 和 Delete()方法来完成。File和Directory类的这两个对应方法是Move() 和 Delete()。FileInfo 和 File类也分别执行CopyTo() 和 Copy()方法。没有复制完整文件夹的方法,而应复制文件夹中的每个文件。
这些方法的使用非常直观—— SDK文档提供了详细的解释。本节介绍在特定情况下,调用File类的静态方法Move()、Copy()和Delete()的作用。为此,把前面的FileProperties示例扩展为一个新示例FilePropetiesAndMovement。这个示例有一个额外的功能:无论什么时候显示文件的属性,该应用程序都会给出删除该文件的选项,或者把该文件移动和复制到其他地方的选项。
C#高级编程:FileInfo使用范例
下面介绍FilePropertiesAndMovement示例。图1所示为该示例的用户界面。
从这个屏幕图上可以看出,它的外观非常类似于FileProperties示例,但在窗口的底部添加了一个组,其中包含三个按钮和一个文本框。这些控件仅在示例显示了文件的属性时才能使用,在其他情况下,它们都是禁用的。我们还压缩了现有的控件,防止主窗体过大。在显示文件的属性时,该示例会自动把文件的完整路径名放在底部的文本框中,供用户编辑。用户可以单击底部的任何一个按钮,执行相应的操作。此时,会显示一个相应的信息框,确认该操作。在上面的示例中,如果用户单击了Copy To,则显示如图图2所示的信息。
图1
图2
当用户单击了Yes按钮后,就可以开始执行某些动作。用户在窗体上执行的某些动作会使显示不正确。例如,在移动和删除文件时,显然不能在同一个地方显示该文件的内容。而且,如果改变同一个文件夹上的文件名,显示的信息也会不正确。
此时,FilePropertiesAndMovement示例会重新设置其控件,在文件的操作结束后,只显示包含文件的文件夹。
为此,需要在FileProperties示例中添加相关的控件,及其事件处理程序代码。
我们添加的控件是buttonDelete、buttonCopyTo、buttonMoveTo和 txtBoxNewPath。
首先看看用户单击Delete按钮时调用的事件处理程序:
protected void OnDeleteButtonClick( object sender, EventArgs e) { try { string filePath = Path.Combine( currentFolderPath, textBoxFileName.Text); string query = "Really delete the file\n" + filePath + ""; if (MessageBox.Show(query, "Delete File", MessageBoxButtons.YesNo) == DialogResult.Yes) { File.Delete(filePath); DisplayFolderList(currentFolderPath); } } catch(Exception ex) { MessageBox.Show("Unable to delete file. The following exception" + " occurred:\n" + ex.Message, "Failed"); } }
这个方法的代码包含在一个try块中,这是因为很显然会抛出一个异常,例如在用户单击了delete按钮后,如果不允许删除该文件,或者当时有另一个进程移动了该文件,就会抛出一个异常。在CurrentParentPath字段中构造要删除文件的路径,其中包含父文件夹的路径,textBoxFileName文本框中的文本。
到此,相信大家对“C#怎么移动、复制和删除文件”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341