转自:http://www.jb51.net/article/37621.htm
本篇文章是对C#操作目录与文件的方法步骤进行了详细的分析介绍,需要的朋友参考下
• 创建目录和文件
1、通过Path类的Combine方法可以合并路径。
- string activeDir = @"C:\myDir";
- string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
复制代码
2、目录的创建。
创建目录时如果目录已存在,则不会重新创建目录,且不会报错。创建目录时会自动创建路径中各级不存在的目录。
(1)通过Directory类的CreateDirectory方法创建。
- string activeDir = @"C:\myDir";
- string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
- System.IO.Directory.CreateDirectory(newPath);
复制代码
(2)通过DirectoryInfo的对象创建。
- System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\myDirTwo\mySubDirThree");
- di.Create();
复制代码
3、文件的创建。
通过Create方法创建文件,会覆盖同名的现有文件。创建文件时,该文件所在路径的目录必须存在,否则报错。
(1)通过File类的Create方法创建。
- string activeDir = @"C:\myDir";
- string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
- System.IO.Directory.CreateDirectory(newPath);
- //创建一个空白文件
- string fileNameOne = DateTime.Now.ToString("yyyyMMddHHmmssffff")
- + ".txt";
- string filePathOne = System.IO.Path.Combine(newPath, fileNameOne);
- System.IO.File.Create(filePathOne);
复制代码
(2)通过FileInfo对象创建。
- //通过Combine合并目录
- //然后创建目录
- string activeDir = @"C:\myDir";
- string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
- System.IO.Directory.CreateDirectory(newPath);
- //创建一个空白文件
- string fileNameOne = DateTime.Now.ToString("yyyyMMddHHmmssffff")
- + ".txt";
- string filePathOne = System.IO.Path.Combine(newPath, fileNameOne);
- System.IO.FileInfo fi = new System.IO.FileInfo(filePathOne);
- fi.Create();
复制代码
• 复制目录文件
- //复制单个文件到指定目录
- string fileName = "test.txt";
- string sourcePath = @"C:\testDir\subTestDir";
- string targetPath = @"C:\testDir\subTestDirTwo";
- string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
- string destFile = System.IO.Path.Combine(targetPath, fileName);
- if (!System.IO.Directory.Exists(targetPath))
- System.IO.Directory.CreateDirectory(targetPath);
- //如果已存在,参数为false时将报错,参数为true重写该文件
- //当copy方法为两个参数时,默认重写为false。
- System.IO.File.Copy(sourceFile, destFile, true);
- //以下为复制一个目录下所有文件到指定目录
- //如果复制有子目录的目录的所有文件,可以用递归或堆栈算法实现
- if (System.IO.Directory.Exists(sourcePath))
- {
- string[] files = System.IO.Directory.GetFiles(sourcePath);
- foreach (string s in files)
- {
- //仅返回路径字符串的文件名及后缀
- fileName = System.IO.Path.GetFileName(s);
- destFile = System.IO.Path.Combine(targetPath, fileName);
- System.IO.File.Copy(s, destFile, true);
- }
- }
- }
复制代码
• 移动目录和文件
- /*移动文件*/
- string sourceFile = @"C:\testDir\subTestDir\test.txt";
- string destFile = @"C:\testDir\subTestDirTwo\test.txt";
- //当目标文件存在时,抛出异常
- System.IO.File.Move(sourceFile, destFile);
- /*移动目录*/
- //移动目录将移动改目录的子目录和文件
- System.IO.Directory.Move(@"C:\testDir\subTestDirTwo\", @"C:\testDir\subTestDir");
复制代码
• 创建目录和文件
1、通过Path类的Combine方法可以合并路径。
[url=]复制代码[/url] 代码如下:
string activeDir = @"C:\myDir";
string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
2、目录的创建。
创建目录时如果目录已存在,则不会重新创建目录,且不会报错。创建目录时会自动创建路径中各级不存在的目录。
(1)通过Directory类的CreateDirectory方法创建。
[url=]复制代码[/url] 代码如下:
string activeDir = @"C:\myDir";
string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
System.IO.Directory.CreateDirectory(newPath);
(2)通过DirectoryInfo的对象创建。
[url=]复制代码[/url] 代码如下:
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\myDirTwo\mySubDirThree");
di.Create();
3、文件的创建。
通过Create方法创建文件,会覆盖同名的现有文件。创建文件时,该文件所在路径的目录必须存在,否则报错。
(1)通过File类的Create方法创建。
[url=]复制代码[/url] 代码如下:
string activeDir = @"C:\myDir";
string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
System.IO.Directory.CreateDirectory(newPath);
//创建一个空白文件
string fileNameOne = DateTime.Now.ToString("yyyyMMddHHmmssffff")
+ ".txt";
string filePathOne = System.IO.Path.Combine(newPath, fileNameOne);
System.IO.File.Create(filePathOne);
(2)通过FileInfo对象创建。
[url=]复制代码[/url] 代码如下:
//通过Combine合并目录
//然后创建目录
string activeDir = @"C:\myDir";
string newPath = System.IO.Path.Combine(activeDir, "mySubDirOne");
System.IO.Directory.CreateDirectory(newPath);
//创建一个空白文件
string fileNameOne = DateTime.Now.ToString("yyyyMMddHHmmssffff")
+ ".txt";
string filePathOne = System.IO.Path.Combine(newPath, fileNameOne);
System.IO.FileInfo fi = new System.IO.FileInfo(filePathOne);
fi.Create();
• 复制目录文件
[url=]复制代码[/url] 代码如下:
//复制单个文件到指定目录
string fileName = "test.txt";
string sourcePath = @"C:\testDir\subTestDir";
string targetPath = @"C:\testDir\subTestDirTwo";
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFile = System.IO.Path.Combine(targetPath, fileName);
if (!System.IO.Directory.Exists(targetPath))
System.IO.Directory.CreateDirectory(targetPath);
//如果已存在,参数为false时将报错,参数为true重写该文件
//当copy方法为两个参数时,默认重写为false。
System.IO.File.Copy(sourceFile, destFile, true);
//以下为复制一个目录下所有文件到指定目录
//如果复制有子目录的目录的所有文件,可以用递归或堆栈算法实现
if (System.IO.Directory.Exists(sourcePath))
{
string[] files = System.IO.Directory.GetFiles(sourcePath);
foreach (string s in files)
{
//仅返回路径字符串的文件名及后缀
fileName = System.IO.Path.GetFileName(s);
destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(s, destFile, true);
}
}
}
• 移动目录和文件
[url=]复制代码[/url] 代码如下:
/*移动文件*/
string sourceFile = @"C:\testDir\subTestDir\test.txt";
string destFile = @"C:\testDir\subTestDirTwo\test.txt";
//当目标文件存在时,抛出异常
System.IO.File.Move(sourceFile, destFile);
/*移动目录*/
//移动目录将移动改目录的子目录和文件
System.IO.Directory.Move(@"C:\testDir\subTestDirTwo\", @"C:\testDir\subTestDir");
• 删除目录和文件
1、删除目录
删除目录,如果该目录不存在,会抛出异常。可以通过File类的Delete方法删除目录,也可以通过FileInfo对象方法删除目录。
(1)通过 File类的Delete方法删除目录
- //删除可写空目录
- //如果不为空抛出目录不为空异常
- try
- {
- System.IO.Directory.Delete(@"C:\testDir\subTestDir");
- }
- catch (System.IO.IOException e)
- {
- Console.WriteLine(e.Message);
- }
- //第二参数为false时,只能删除空目录,否则抛出不为空异常
- //第二参数为true时,删除目录,包括子目录和文件
- try
- {
- System.IO.Directory.Delete(@"C:\testDir\subTestDir", true);
- }
- catch(System.IO.IOException e)
- {
- Console.WriteLine(e.Message);
- }
复制代码
(2)通过FileInfo对象方法删除目录
- System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\testDir\subTestDirTwo");
- try
- {
- //无参数删除空目录
- //当参数为false,可删除空目录;为true,删除目录,包括子目录和文件
- di.Delete(true);
- }
- catch (System.IO.IOException e)
- {
- Console.WriteLine(e.Message);
- }
复制代码
2、删除文件
删除文件时如果指定文件的目录存在,而文件不存在,则不会抛出异常,如果指定文件的目录不存在,则会抛出异常。
(1)通过File类Delete方法删除文件
- try
- {
- System.IO.File.Delete(@"C:\testDir\subTestDir\test.txt");
- }
- catch(System.IO.IOException e)
- {
- Console.WriteLine(e.Message);
- }
复制代码
(2)通过FileInfo对象Delete方法删除文件
- System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\testDir\subTestDir\test1.txt");
- try
- {
- fi.Delete();
- }
- catch(System.IO.IOException e)
- {
- Console.WriteLine(e.Message);
- }
复制代码
|
|