标签:
一、文件操作
1、File类的常用静态方法:
FileInfo类和File类的功能类似,不同的是使用FileInfo类必须实例化对象;如需调用一系列方法,FileInfo类效率更高、更简单(由于File类的静态方法在使用时都会进行安全检查)
二、目录操作
1、Directory类的常用静态方法:(目录就是文件夹)
DirectoryInfo类
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类常用静态方法:
得到当前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
标签:
原文地址:http://www.cnblogs.com/DonAndy/p/5921116.html