📜  复制文件 - C# (1)

📅  最后修改于: 2023-12-03 14:51:39.545000             🧑  作者: Mango

复制文件 - C#

在日常的编程工作中,我们经常需要处理文件的复制操作。在C#中,复制文件可以通过多种方式实现,其中包括使用File类、FileStream类以及StreamReaderStreamWriter类等。

本文将介绍如何使用C#来完成文件的复制操作,并提供相应的代码示例。

使用File类复制文件

File类是C#中用于操作文件的静态类,提供了一系列静态方法用于复制、移动、删除、创建等文件操作。在使用File类复制文件时,我们只需调用Copy方法并传入源文件路径和目标文件路径即可。

下面是一个使用File类复制文件的示例代码:

using System;
using System.IO;

public class FileCopyExample
{
    public static void Main()
    {
        string sourceFilePath = "C:\\path\\to\\source\\file.txt";
        string targetFilePath = "C:\\path\\to\\target\\file.txt";

        try
        {
            File.Copy(sourceFilePath, targetFilePath);
            Console.WriteLine("文件复制成功!");
        }
        catch (Exception ex)
        {
            Console.WriteLine("文件复制失败:" + ex.Message);
        }
    }
}

使用File类复制文件时,我们需要注意以下几点:

  • 如果目标文件已存在,将会覆盖目标文件;
  • 可以通过传入第三个参数来控制是否覆盖现有的目标文件;
  • File.Copy方法是阻塞的,即在文件复制完成之前,程序会一直等待。
使用FileStream类复制文件

FileStream类是C#中用于文件读写的类,通过FileStream类,我们可以实现更加灵活的文件操作。使用FileStream类复制文件时,我们需要手动读取源文件的内容,并将内容写入到目标文件中。

下面是一个使用FileStream类复制文件的示例代码:

using System;
using System.IO;

public class FileStreamCopyExample
{
    public static void Main()
    {
        string sourceFilePath = "C:\\path\\to\\source\\file.txt";
        string targetFilePath = "C:\\path\\to\\target\\file.txt";

        try
        {
            using (FileStream sourceFile = new FileStream(sourceFilePath, FileMode.Open))
            using (FileStream targetFile = new FileStream(targetFilePath, FileMode.Create))
            {
                byte[] buffer = new byte[1024];
                int bytesRead;

                while ((bytesRead = sourceFile.Read(buffer, 0, buffer.Length)) > 0)
                {
                    targetFile.Write(buffer, 0, bytesRead);
                }
            }

            Console.WriteLine("文件复制成功!");
        }
        catch (Exception ex)
        {
            Console.WriteLine("文件复制失败:" + ex.Message);
        }
    }
}

使用FileStream类复制文件时,我们需要注意以下几点:

  • 使用FileStream类复制文件可以实现更加灵活的文件操作,可以控制读写的缓冲区大小和读取的偏移量等;
  • 在使用FileStream类复制文件时,需要手动创建源文件和目标文件的FileStream对象,并通过读取和写入操作实现文件内容的复制;
  • 在复制完成后,需要手动关闭文件流对象。
使用StreamReader和StreamWriter类复制文件

StreamReaderStreamWriter类是C#中用于读取和写入文本文件的类,它们依赖于FileStream类。使用StreamReaderStreamWriter类复制文件时,我们需要创建源文件和目标文件的流读取器和流写入器,并逐行读取源文件的内容并写入到目标文件中。

下面是一个使用StreamReaderStreamWriter类复制文件的示例代码:

using System;
using System.IO;

public class StreamReaderWriterCopyExample
{
    public static void Main()
    {
        string sourceFilePath = "C:\\path\\to\\source\\file.txt";
        string targetFilePath = "C:\\path\\to\\target\\file.txt";

        try
        {
            using (StreamReader reader = new StreamReader(sourceFilePath))
            using (StreamWriter writer = new StreamWriter(targetFilePath))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    writer.WriteLine(line);
                }
            }

            Console.WriteLine("文件复制成功!");
        }
        catch (Exception ex)
        {
            Console.WriteLine("文件复制失败:" + ex.Message);
        }
    }
}

使用StreamReaderStreamWriter类复制文件时,我们需要注意以下几点:

  • StreamReaderStreamWriter类适用于文本文件的复制;
  • 在复制文件时,可以选择逐行读取源文件的内容,并写入到目标文件中;
  • 在复制完成后,需要手动关闭文件流读取器和文件流写入器。

以上就是使用C#复制文件的三种常见方法。根据实际需求和文件大小等因素,可以选择合适的方法来完成文件复制操作。希望本文能对你理解和掌握C#中的文件复制操作有所帮助!