当我们需要在应用程序中处理文件操作时,File.Copy(String, String) 是一个非常实用的内置方法。它主要用于将现有源文件的内容完整地复制到一个新的目标文件中,而这个目标文件正是由该函数在复制过程中创建的。
语法:
public static void Copy (string sourceFileName, string destFileName);
参数:
为了执行复制操作,我们需要向该函数提供两个参数,具体说明如下:
> – sourceFileName: 这是数据被复制的源文件,即我们要读取的文件。
> – destFileName: 这是数据被粘贴的目标文件。需要注意的是,这个文件目前必须是不存在的(不能是一个已有的文件或目录)。
异常:
在使用文件操作时,处理潜在的异常非常重要。以下是可能会遇到的几种情况:
- UnauthorizedAccessException: 调用者没有所需的操作权限。
- ArgumentException: 源文件名或目标文件名是零长度字符串,仅包含空白,或者包含 InvalidPathChars 定义的一个或多个无效字符。或者,源文件名或目标文件名指定了一个目录。
- ArgumentNullException: 源文件名或目标文件名为 null。
- PathTooLongException: 给定的路径、文件名或两者都超过了系统定义的最大长度。
- DirectoryNotFoundException: 源文件名或目标文件名中给定的路径无效(例如,它位于未映射的驱动器上)。
- FileNotFoundException: 未找到源文件。
- IOException: destFileName 已经存在。或者发生了 I/O 错误。
- NotSupportedException: 源文件名或 destFileName 的格式无效。
让我们通过下面的程序来看看 File.Copy(String, String) 方法是如何工作的。
程序 1: 在运行以下代码之前,我们创建了一个源文件 file.txt,内容如下。下面的代码会自动创建一个名为 gfg.txt 的目标文件,并将源文件的内容复制到其中。
CSharp
CODEBLOCK_38b42dfd
执行过程:
mcs -out:main.exe main.cs
mono main.exe
Copying process has been done.
运行上述代码后,我们将看到输出信息,并且一个新的目标文件 gfg.txt 已经被创建,内容如下所示:
程序 2: 在运行下面的代码之前,我们预先创建了两个包含一些内容的文件,如下所示:
CSharp
CODEBLOCK_170fec95
执行过程:
mcs -out:main.exe main.cs
mono main.exe
Could not create file "/home/runner/NutritiousHeavyRegression/gfg.txt". File already exists.
运行上述代码后,系统抛出了上述错误。正如我们所预料的,这是因为目标文件在程序运行之前就已经存在了。