C#程序中创建、复制、移动、删除文件或文件夹的示例

创建文件或文件夹

您可通过编程方式在您的计算机上创建文件夹、子文件夹和子文件夹中的文件,并将数据写入文件。

public class CreateFileOrFolder
{
  static void Main()
  {
    string folderName = @"c:\Top-Level Folder";

    string pathString = System.IO.Path.Combine(folderName, "SubFolder");

    string pathString2 = @"c:\Top-Level Folder\SubFolder2";

    System.IO.Directory.CreateDirectory(pathString);

    string fileName = System.IO.Path.GetRandomFileName();

    pathString = System.IO.Path.Combine(pathString, fileName);

    Console.WriteLine("Path to my file: {0}\n", pathString);

    if (!System.IO.File.Exists(pathString))
    {
      using (System.IO.FileStream fs = System.IO.File.Create(pathString))
      {
        for (byte i = 0; i < 100; i++)
        {
          fs.WriteByte(i);
        }
      }
    }
    else
    {
      Console.WriteLine("File \"{0}\" already exists.", fileName);
      return;
    }

    try
    {
      byte[] readBuffer = System.IO.File.ReadAllBytes(pathString);
      foreach (byte b in readBuffer)
      {
        Console.Write(b + " ");
      }
      Console.WriteLine();
    }
    catch (System.IO.IOException e)
    {
      Console.WriteLine(e.Message);
    }

    System.Console.WriteLine("Press any key to exit.");
    System.Console.ReadKey();
  }

}

输出:
Path to my file: c:\Top-Level Folder\SubFolder\ttxvauxe.vv0

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8
3 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

如果该文件夹已存在,则 CreateDirectory 不执行任何操作,且不会引发异常。但是,File.Create 用新的文件替换现有文件。该示例使用一个 if-else 语句阻止现有文件被替换。
通过在示例中做出以下更改,您可以根据具有某个名称的程序是否存在来指定不同的结果。如果该文件不存在,代码将创建一个文件。如果该文件存在,代码将把数据添加到该文件中。
指定一个非随机文件名。

// Comment out the following line.
//string fileName = System.IO.Path.GetRandomFileName();

// Replace that line with the following assignment.
string fileName = "MyNewFile.txt";

用以下代码中的 using 语句替换 if-else 语句。

using (System.IO.FileStream fs = new System.IO.FileStream(pathString, FileMode.Append))
{
  for (byte i = 0; i < 100; i++)
  {
    fs.WriteByte(i);
  }
}

运行该示例若干次以验证数据是否每次都添加到文件中。

复制、删除和移动文件和文件夹
以下示例说明如何使用 System.IO 命名空间中的 System.IO.File、System.IO.Directory、System.IO.FileInfo 和 System.IO.DirectoryInfo 类以同步方式复制、移动和删除文件和文件夹。 这些示例没有提供进度栏或其他任何用户界面。

示例
下面的示例演示如何复制文件和目录。

public class SimpleFileCopy
{
  static void Main()
  {
    string fileName = "test.txt";
    string sourcePath = @"C:\Users\Public\TestFolder";
    string targetPath = @"C:\Users\Public\TestFolder\SubDir";

    // Use Path class to manipulate file and directory paths.
    string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
    string destFile = System.IO.Path.Combine(targetPath, fileName);

    // To copy a folder's contents to a new location:
    // Create a new target folder, if necessary.
    if (!System.IO.Directory.Exists(targetPath))
    {
      System.IO.Directory.CreateDirectory(targetPath);
    }

    // To copy a file to another location and
    // overwrite the destination file if it already exists.
    System.IO.File.Copy(sourceFile, destFile, true);

    // To copy all the files in one directory to another directory.
    // Get the files in the source folder. (To recursively iterate through
    // all subfolders under the current directory, see
    // "How to: Iterate Through a Directory Tree.")
    // Note: Check for target path was performed previously
    //    in this code example.
    if (System.IO.Directory.Exists(sourcePath))
    {
      string[] files = System.IO.Directory.GetFiles(sourcePath);

      // Copy the files and overwrite destination files if they already exist.
      foreach (string s in files)
      {
        // Use static Path methods to extract only the file name from the path.
        fileName = System.IO.Path.GetFileName(s);
        destFile = System.IO.Path.Combine(targetPath, fileName);
        System.IO.File.Copy(s, destFile, true);
      }
    }
    else
    {
      Console.WriteLine("Source path does not exist!");
    }

    // Keep console window open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();
  }
}

下面的示例演示如何移动文件和目录。

public class SimpleFileMove
{
  static void Main()
  {
    string sourceFile = @"C:\Users\Public\public\test.txt";
    string destinationFile = @"C:\Users\Public\private\test.txt";

    // To move a file or folder to a new location:
    System.IO.File.Move(sourceFile, destinationFile);

    // To move an entire directory. To programmatically modify or combine
    // path strings, use the System.IO.Path class.
    System.IO.Directory.Move(@"C:\Users\Public\public\test\", @"C:\Users\Public\private");
  }
}

下面的示例演示如何删除文件和目录。

public class SimpleFileDelete
{
  static void Main()
  {
    // Delete a file by using File class static method...
    if(System.IO.File.Exists(@"C:\Users\Public\DeleteTest\test.txt"))
    {
      // Use a try block to catch IOExceptions, to
      // handle the case of the file already being
      // opened by another process.
      try
      {
        System.IO.File.Delete(@"C:\Users\Public\DeleteTest\test.txt");
      }
      catch (System.IO.IOException e)
      {
        Console.WriteLine(e.Message);
        return;
      }
    }

    // ...or by using FileInfo instance method.
    System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\Users\Public\DeleteTest\test2.txt");
    try
    {
      fi.Delete();
    }
    catch (System.IO.IOException e)
    {
      Console.WriteLine(e.Message);
    }

    // Delete a directory. Must be writable or empty.
    try
    {
      System.IO.Directory.Delete(@"C:\Users\Public\DeleteTest");
    }
    catch (System.IO.IOException e)
    {
      Console.WriteLine(e.Message);
    }
    // Delete a directory and all subdirectories with Directory static method...
    if(System.IO.Directory.Exists(@"C:\Users\Public\DeleteTest"))
    {
      try
      {
        System.IO.Directory.Delete(@"C:\Users\Public\DeleteTest", true);
      }

      catch (System.IO.IOException e)
      {
        Console.WriteLine(e.Message);
      }
    }

    // ...or with DirectoryInfo instance method.
    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\Users\Public\public");
    // Delete this dir and all subdirs.
    try
    {
      di.Delete(true);
    }
    catch (System.IO.IOException e)
    {
      Console.WriteLine(e.Message);
    }

  }
}
(0)

相关推荐

  • C#实现的文件操作封装类完整实例【删除,移动,复制,重命名】

    本文实例讲述了C#实现的文件操作封装类.分享给大家供大家参考,具体如下: 最近发现群共享里面有个C# 文件操作封装类,其方法是调用Windows API 来操作的文件的删除.移动.复制.重命名操作.下载下来一试,发现果然不错,特在此记录,以防丢失! 文件操作类代码如下: using System; using System.Runtime.InteropServices; using System.IO; namespace LxFile { /// <summary> /// 文件操作代理,

  • C# 复制与删除文件的实现方法

    C# 复制与删除文件的实现方法 1.首先是复制文件 首先打开我们的对话框获得文件路径,当然也可以直接编写路径 private void BtnAddFile_Click(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {

  • C#进行文件读写、创建、复制、移动、删除的方法

    本文实例讲述了C#进行文件读写.创建.复制.移动.删除的方法.分享给大家供大家参考.具体分析如下: 1.文件夹创建.移动.删除 //创建文件夹 Directory.CreateDirectory(Server.MapPath("a")); Directory.CreateDirectory(Server.MapPath("b")); Directory.CreateDirectory(Server.MapPath("c")); //移动b到a D

  • C# 对文件与文件夹的操作包括删除、移动与复制

    在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类.文件夹(Folder)是只在Windows操作系统中使用的名词.在操作系统的理论中,人们更习惯于使用目录(Directory)这个名词.或许微软为了有朝一日将.Net移植到其他的操作系统中(实际上也有很多人也在做着这个项目),所以还是以Directory来命名操作文件夹的类. File类和Directory类都是静态类.使用它们的好处

  • C#程序中创建、复制、移动、删除文件或文件夹的示例

    创建文件或文件夹 您可通过编程方式在您的计算机上创建文件夹.子文件夹和子文件夹中的文件,并将数据写入文件. public class CreateFileOrFolder { static void Main() { string folderName = @"c:\Top-Level Folder"; string pathString = System.IO.Path.Combine(folderName, "SubFolder"); string pathSt

  • C# 如何在WINForm程序中创建XML文件

    <?xml version="1.0" encoding="gb2312"?> <FilesInformation>   <version>1.0.1818.42821</version>   <description>说明</description>   <FileItem    FileName="name"   FileVersion="sdf"

  • ASP.NET 上传文件到共享文件夹的示例

    目录 上传文件代码 web.config 工具方法 常量 具体上传文件代码 创建共享文件夹参考资料 上传文件代码 web.config <!--上传文件配置,UploadPath值一定是服务器ip,内网ip最好--> <add key="UploadPath" value="\\172.21.0.10\File" /> <add key="DownloadPath" value="http://x.x.x.

  • Java应用程序中创建图像

    合成图像 您不必从文件中读取所有的图像 - 您可以创建自己的图像.要创建自己的图像,最灵活的方法是用一个 BufferedImage 对象,它是 Image 类的一个子类,它把图像数据存储在一个可以被访问的缓冲区中.它还支持各种存储像素数据的方法:使用或不使用 alpha 通道.不同种类的颜色模型以及颜色组件的各种精确度.ColorModel 类提供一种灵活的方法定义各种颜色模型,以和 BufferedImage 对象一起使用.为了理解颜色模型工作的基本知识,我们将只使用一个缺省的颜色模型,其颜

  • 详解MongoDB中创建集合与删除集合的操作方法

    创建集合:createCollection() 方法 MongoDB db.createCollection(name, options) 是用来创建集合. 语法: 基本的 createCollection() 命令语法如下: db.createCollection(name, options) 在命令中, name 是要创建的集合的名称. Options 是一个文件,用于指定配置的集合 参数 类型 描述 Name String 要创建的集合名称 Options Document (可选)指定有

  • Ruby程序中创建和解析XML文件的方法

    使用builder创建XML builder安装方法: gem install builder require 'builder' x = Builder::XmlMarkup.new(:target => $stdout, :indent => 1) #":target =>$stdout"参数:指示输出内 容将被写向标准输出控制台 #":indent =>1"参数:XML输出形式将被缩 进一个空格字符x.instruct! :xml, :

  • 在Go语言程序中使用gojson来解析JSON格式文件

    gojson是快速解析json数据的一个golang包,你使用它可以快速的查找json内的数据 安装 go get github.com/widuu/gojson 使用简介 结构 复制代码 代码如下: type Js struct {     data interface{} } (1) func Json(data) *Js data为string类型,初始化Js结构,解析json并且return Js.data 复制代码 代码如下: json := `{"from":"e

  • Android中创建快捷方式及删除快捷方式实现方法

    /** * * 创建快捷方式 * @param map 快捷方式图标 * @param appName 快捷方式标题 * @param appUrl 快捷方式打开的地址 * @param iconUrl 快捷方式图标地址 * * */ public static void createShortcut(Context activity ,Bitmap map ,String appName ,String appUrl ,String iconUrl){ Intent shortcut = ne

  • Blazor Server 应用程序中进行 HTTP 请求

    目录 Blazor Server 应用程序中进行 HTTP 请求 一.第三方 Web API 概览 二.从 Blazor Sever 应用程序开始 三.在 Blazor Server 应用程序中使用 IHttpClientFactory 创建 HttpClient 四.在 Blazor Server 应用程序中创建命名 HttpClient 对象 五.在 Blazor Server 应用程序中创建类型化 HttpClient 对象 Blazor Server 应用程序中进行 HTTP 请求 翻译

  • C++中头文件和源文件详细介绍

    C++中的头文件和源文件详解 一.C++编译模式 通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C++的源代码. C+ +语言支持"分别编译"(separate compilation).也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里..cpp文件里的东西都是相对独立的,在编 译(compile)时不需要与其他文件互通,只需要

随机推荐