C# 文件和文件夹操作
一、文件操作
1、File类的常用静态方法:
- void AppendAllText(string path, string contents),将文本contents附加到文件path中
- bool Exists(string path)判断文件path是否存在
- string[] ReadAllLines(string path) 读取文本文件到字符串数组中
- string ReadAllText(string path) 读取文本文件到字符串中
- void WriteAllText(string path, string contents)将文本contents保存到文件path中,会覆盖旧内容。
- WriteAllLines(string path,string[] contents),将字符串数组逐行保存到文件path中,会覆盖旧内容。
- Copy(参数)方法:复制文件
- Exists(string path):确定指定文件是否存在
- Delete(string path):删除指定的文件,如果指定的文件不存在,则不引发异常
- GetAttributes(string path):获取在此路径上的文件属性
- File.SetAttributes(string path,FileAttributes fileAttributes):设置指定路径上的文件属性
- GetCreationTime(string path):返回指定文件或目录的创建日期和时间
FileInfo类和File类的功能类似,不同的是使用FileInfo类必须实例化对象;如需调用一系列方法,FileInfo类效率更高、更简单(由于File类的静态方法在使用时都会进行安全检查)
二、目录操作
1、Directory类的常用静态方法:(目录就是文件夹)
- void Delete(string path, bool recursive):删除目录, recursive表示是否递归删除,如果recursive为false则只能删除空目录
- bool Exists(string path) :判断目录是否存在
- Move(string sourceDirName,string destDirName):移动
- CreateDirectory(string path):创建文件夹
- string[] GetDirectories(string path):得到一个目录下的子目录
- string[] GetDirectories(string path, string searchPattern, SearchOption searchOption):通配符查找目录下的子目录
- static string[] GetFiles(string path):得到指定目录下的文件名称数组
- string[] GetFiles(string path, string searchPattern, SearchOption searchOption):通配符查找目录下的文件
- DirectoryInfo GetParent(string path):得到目录的父目录
- GetDirectories():获取当前目录的子目录的名称数组
- GetCurrentDirectory():获取应用程序的当前目录
- GetDorectoryRoot(string path):获取根目录
DirectoryInfo类
- DirectoryInfo[] GetDirectories():获取当前目录的子目录的对象数组
- FileInfo[] GetFiles():得到当前目录下文件列表(FileInfo对象数组)
- FileSystemInfo[] GetFileSystemInfos():返回表示某个目录中所有文件和子目录的强类型 FileSystemInfo 项的数组。
2、判断该路径是文件还是文件夹

string path = "D:\\test.txt";
// 方式一
if (File.GetAttributes(path).CompareTo(FileAttributes.Directory) == 0)
{
Console.WriteLine("文件夹");
}
else
{
Console.WriteLine("文件");
}
// 方式二
if (File.Exists(path))
{
Console.WriteLine("文件");
}
else if (Directory.Exists(path))
{
Console.WriteLine("文件夹");
}
3、创建目录、复制目录和删除目录

/// <summary>
/// 创建目录,可以直接Directory.CreateDirctory(string dirPath),或使用以下方法
/// </summary>
/// <param name="path"></param>
public static void CreateDirtory(string path)
{
if (!File.Exists(path))
{
string[] dirArray = path.Split('\\');
string temp = string.Empty;
for (int i = 0; i < dirArray.Length - 1; i++)
{
temp += dirArray[i].Trim() + "\\";
if (!Directory.Exists(temp))
Directory.CreateDirectory(temp);
}
}
} /// <summary>
/// 文件夹的复制
/// </summary>
/// <param sourceDir="string">要复制的原路径</param>
/// <param targetDir="string">要复制的目的路径</param>
/// <param name="overwrite">若为true,则允许覆盖现有文件;否则为false</param>
/// <param name="copySubDir">是否复制子目录</param>
public static void DirectoryCopy(string sourceDirPath, string targetDirPath, bool overwrite, bool copySubDir)
{
// 如果目录路径不是以路径符“\”结尾,则在目录路径后加上路径符“\”
if (sourceDirPath[sourceDirPath.Length - 1] != Path.DirectorySeparatorChar)
sourceDirPath += Path.DirectorySeparatorChar;
DirectoryInfo sourceDirInfo = new DirectoryInfo(sourceDirPath);
try
{
if (!sourceDirInfo.Exists)//判断所指的文件或文件夹是否存在
{
return;
}
if (!Directory.Exists(targetDirPath))
{
Directory.CreateDirectory(targetDirPath);
}
// 获取文件夹中所有文件和文件夹
FileSystemInfo[] sourceFiles = sourceDirInfo.GetFileSystemInfos();
// 对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作
foreach (FileSystemInfo sourceFileSys in sourceFiles)
{
FileInfo file = sourceFileSys as FileInfo;
if (file != null) // 如果是文件的话,进行文件的复制操作
{
string targetFilePath = Path.Combine(targetDirPath, file.Name);
if (File.Exists(targetFilePath) && overwrite)
{
File.SetAttributes(targetFilePath, FileAttributes.Normal);
}
file.CopyTo(targetFilePath, overwrite); // 将文件复制到指定的路径中
}
else
{
if (copySubDir)
{
DirectoryCopy(sourceFileSys.FullName, Path.Combine(targetDirPath, sourceFileSys.Name), overwrite, copySubDir);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 删除指定的目录
/// </summary>
/// <param name="dirPath">目录路径</param>
/// <param name="isDelSelf">是否删除本身:true为删除指定目录,false为删除指定目录下的所有目录、子目录和文件</param>
public static void DeleteDirectory(string dirPath, bool isDelSelf)
{
if (Directory.Exists(dirPath))
{
if (isDelSelf)
{
Directory.Delete(dirPath, true);
}
else
{
foreach (string content in Directory.GetFileSystemEntries(dirPath))
{
if (Directory.Exists(content))
Directory.Delete(content, true);
else if (File.Exists(content))
File.Delete(content);
}
}
}
}
三、文件路径
Path类常用静态方法:
- string ChangeExtension(string path, string extension) :
- 修改文件的后缀,“修改”支持字符串层面的,没有真的给文件改名,如: string s = Path.ChangeExtension(@"C:\temp\F3.png", "jpg")
- string Combine(string path1, string path2):将两个路径合成一个路径,比用+好,可以方便解决是不是加斜线的问题,自动处理路径分隔符的问题
- string s = Path.Combine(@"c:\temp","a.jpg")
- string GetDirectoryName(string path) :得到文件的路径名。Path.GetDirectoryName(@"c:\temp\a.jpg")
- string GetExtension(string path) 得到文件的扩展名
- string GetFileName(string path) 得到文件路径的文件名部分
- string GetFileNameWithoutExtension(string path) 得到去除扩展名的文件名
- string GetFullPath(string path) 得到文件的全路径。”.\”当前路径,”..\”上一级路径,”..\..\”上一级的上一级
- string GetTempFileName() 得到一个唯一的临时文件名
- string GetTempPath() 得到临时文件夹的路径
得到当前exe的路径。Assembly.GetExecutingAssembly().Location得到exe的全路径,Path.GetDirectoryName得到目录路径,不要用Directory.GetCurrentDirectory(),这个可能会变(使用OpenFileDialog或者SetCurrentDirectory())。
AppDomain.CurrentDomain.BaseDirectory; // 获取当前程序的目录
Application.StartupPath // 获取当前程序的目录
System.Environment.CurrentDirectory // 获取当前程序的目录,与Directory.GetCurrentDirectory()一样可能会变(使用OpenFileDialog或者SetCurrentDirectory())。参考:http://www.cnblogs.com/mayswind/archive/2013/06/12/3119570.html- string ChangeExtension(string path, string extension) :
C# 文件和文件夹操作的更多相关文章
- [No000083]文件与文件夹操作
#region Folder option 文件夹操作 /// <summary> /// 指定目录是否存在 /// </summary> /// <param name ...
- PHP 文件夹操作「复制、删除、查看大小」递归实现
PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...
- Windows Store App 用户库文件夹操作
上面介绍了与用户库文件有关的操作,包括创建.读写等,下面将介绍与用户库文件夹相关的操作. 与文件操作一样,想要对用户库文件夹进行操作,需要首先获取用户库的相应位置,获取的方法上面已经介绍过了,这里不再 ...
- Winform 基础知识 之文件夹操作
using System.IO; /// <summary> /// 删除文件夹下所有文件 /// </summary> /// <param name="di ...
- .Net文件*夹*操作
一.文件夹操作 Directory类,DirectoryInfo类.使用using System.IO命名空间 (一)创建文件夹 方法一: private string path = @"F ...
- Python操作文件、文件夹、字符串
Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...
- 【CITE】C#目录、文件、文件夹操作
1. 在一个目录下创建一个文件夹 if (!System.IO.Directory.Exists(path)) System.IO.Directory.CreateDirectory(path); ...
- PYTHON对文件及文件夹的一些操作
python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件:1) os.mknod("test.txt") 创建空文件2) open("test. ...
- Java中创建操作文件和文件夹的工具类
Java中创建操作文件和文件夹的工具类 FileUtils.java import java.io.BufferedInputStream; import java.io.BufferedOutput ...
随机推荐
- 【MyEcplise SVN】myEcplise上安装SVN的多种方式
第一种:SVN的在线安装 1.打开MyEclipse,找到顶部菜单栏 Help(帮助)-Install from Site-(从网站安装),如下图 2. 然后: 点击Install from Site ...
- 系统剖析Android中的内存泄漏
[转发]作为Android开发人员,我们或多或少都听说过内存泄漏.那么何为内存泄漏,Android中的内存泄漏又是什么样子的呢,本文将简单概括的进行一些总结. 关于内存泄露的定义,我可以理解成这样 没 ...
- 关于Char类型数据做cout输出
当用cout 或者 printf()对char 或者 unsigned char类型数据进行输出的时候,默认输出的都是字符,而不是字符对应的数值.如果要输出数值,必须做int 类型数据的强制转换. 例 ...
- 宫格布局实例(注意jquery的版本号要统一)
<!DOCTYPE html><html><head><meta charset="utf-8" /><style> * ...
- light oj 1422 Halloween Costumes (区间dp)
题目链接:http://vjudge.net/contest/141291#problem/D 题意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问 ...
- DSP using MATLAB 示例Example3.4
代码: n = [-1:3]; x = [1:5]; % x(n) = {1,2,3,4,5} % * % k = 0:500; w = (pi/500)*k; % [0,pi] axis divid ...
- [xsd学习]xsd介绍
一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料 ...
- 一个简单的dos脚本, svn 获取代码 - Tomcat 备份 - Maven 编译 - 停止/启动Tomcat - Tomcat站点 发布
获取最新代码 svn update --username %SVN_USER% --password %SVN_PASSWORD% >> "../%LOG_FILE%" ...
- Bower In ASP.NET Core
创建一个ASP.NET Core MVC项目的时候,会产生一个bower.json的文件,用于管理前段的js. NPM & Bower NPM主要运用于Node.js项目的内部依赖包管理,安装 ...
- 每天一个linux命令--su
su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell:而后者连用户和Shell环境一起切换成root身份了. [richmail@porta ...