此篇文档是老早就放到草稿箱中了,断断续续编辑了几次。结合自己经常用到的对于文件的操作,结合msdn做此文。

1、File 类 --转自msdn

常用方法:

名称 说明
AppendAllLines(String, IEnumerable<String>)

向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,

此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。

AppendAllLines(String, IEnumerable<String>, Encoding)

使用指定的编码向一个文件中追加行,然后关闭该文件。 如果指

定文件不存在,此方法会创建一个文件,向其中写入指定的行,然

后关闭该文件。

AppendAllText(String, String)

打开一个文件,向其中追加指定的字符串,然后关闭该文件。

如果文件不存在,此方法将创建一个文件,将指定的字符串写

入文件,然后关闭该文件。

 Create(String)  在指定路径中创建或覆盖文件。
Create(String, Int32) 创建或覆盖指定的文件。(string path, int bufferSize)
Exists(String)  确定指定的文件是否存在。bool
Open(String, FileMode)  以读/写访问权限打开指定路径上的 FileStream
ReadAllLines(String) 打开一个文本文件,读取文件的所有行,然后关闭该文件。
ReadAllText(String) 打开一个文本文件,读取文件的所有行,然后关闭该文件。

WriteAllText(String, String)

创建一个新文件,向其中写入指定的字符串,然后关闭文件。

如果目标文件已存在,则覆盖该文件。

 WriteAllLines(String, IEnumerable<String>)  创建一个新文件,向其中写入一个字符串集合,然后关闭该文件。

使用File类用于典型操作,如复制、移动、重命名、创建、打开、删除和一次将追加到单个文件。您(这个字保留,敬亲爱的读者)还可以使用File类用于获取和设置文件属性或DateTime与创建过程中,相关信息访问及文件的写入。如果您想要在多个文件上执行操作,请参阅Directory.GetFiles 或 DirectoryInfo.GetFiles

2、FileInfo 类 --转自msdn

提供用于创建、复制、删除、移动和打开文件的属性和实例方法,并且帮助创建 FileStream 对象。 此类不能被继承。

名称 说明
FileInfo(String)

初始化作为文件路径的包装的 FileInfo 类的新实例。

属性

名称 说明 语法 
CreationTime

获取或设置当前文件或目录的创建时间。

(继承自 FileSystemInfo。)

 
Directory

获取父目录的实例。

public DirectoryInfo Directory { get; }
表示此文件父目录的 DirectoryInfo 对象。
DirectoryName

获取表示目录的完整路径的字符串。

public string DirectoryName { get; }
表示目录的完整路径的字符串。
Exists

获取指示文件是否存在的值。

(覆盖 FileSystemInfo.Exists。)

public override bool Exists { get; }
如果该文件存在,则为 true;如果文件不存在或
文件即是目录,则为 false
Extension

获取表示文件扩展名部分的字符串。

(继承自 FileSystemInfo。)

public string Extension { get; }
包含 FileSystemInfo 扩展名的字符串。Extension
 属性将返回 FileSystemInfo 扩展,包括句点 (.)。 
例如,对于文件 c:\NewFile.txt,此属性返回".txt"
FullName

获取目录或文件的完整目录。

(继承自 FileSystemInfo。)

public virtual string FullName { get; }
包含完整目录的字符串。
例如,对于文件 c:\NewFile.txt,
此属性返回"c:\NewFile.txt"。
Name

获取文件名。

(覆盖 FileSystemInfo.Name。)

 

常用方法:

名称 说明
AppendText()

创建一个 StreamWriter,它向 FileInfo 的此实例表示的文件追加文本。

CopyTo(String)

将现有文件复制到新文件,不允许覆盖现有文件。

Create()  创建文件。
OpenText()  创建使用从现有文本文件中读取的 UTF8 编码的 StreamReader

3、Directory 类--转自msdn

公开用于通过目录和子目录进行创建、移动和枚举的静态方法。 无法继承此类。

常用方法

名称 说明 备注
CreateDirectory(String)

在指定路径中创建所有目录和子目录,除非它们已经存在。

中指定的所有目录 path 创建的除非它们已经存在,或除非的某些部分 path 无效。 如果该目录已存在,此方法不会创建一个新目录,但它将返回 DirectoryInfo 现有目录的对象。

path 参数指定目录路径,而不是文件路径

CreateDirectory(String, DirectorySecurity)

在指定路径中创建所有目录(除非已存在),并应用指定的 Windows 安全性。

 
Delete(String)

从指定路径删除空目录。

 
Delete(String, Boolean)

删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。

 
Exists(String)  确定给定路径是否引用磁盘上的现有目录。

如果 path 指向现有目录,则为 true

如果该目录不存在或者在尝试确定指定目

录是否存在时出错,则为 false

GetCurrentDirectory()  获取应用程序的当前工作目录。  包含当前工作目录的路径且不以反斜杠 (\) 结尾的字符串。
Directory.CreateDirectory:使用仅冒号字符 (:) 创建一个目录不受支持,并将导致 NotSupportedException 引发。
 
 4、DirectoryInfo 类 --转自msdn
属性
名称 说明 语法
Exists

获取指示目录是否存在的值。(覆盖 FileSystemInfo.Exists。)

public override bool Exists { get; }
如果目录存在,则为 true;否则为 false
Extension  获取表示文件扩展名部分的字符串。(继承自 FileSystemInfo。)  
FullName  获取目录的完整路径。(覆盖 FileSystemInfo.FullName。)  
Name  获取此 DirectoryInfo 实例的名称。(覆盖 FileSystemInfo.Name。)  
Parent  获取指定的子目录的父目录。  
Root  获取目录的根部分。  

方法

名称 说明 语法
Create()

创建目录。

 
Create(DirectorySecurity)

使用 DirectorySecurity 对象创建目录。

 
Delete()  如果此 DirectoryInfo 为空则将其删除。(覆盖 FileSystemInfo.Delete()。)  
Delete(Boolean)  删除 DirectoryInfo 的此实例,指定是否删除子目录和文件。  
GetFiles()  返回当前目录的文件列表。(FileInfo 类型的数组。)
di.GetFiles()
GetFiles(String)  返回当前目录中与给定的搜索模式匹配的文件列表。(FileInfo 类型的数组。)

di.GetFiles("*2*")
di.GetFiles("test?.txt")

综合应用的例子

   class FileOperate
{
/// <summary>
/// 构造函数
/// </summary>
public FileOperate()
{
} /// <summary>
/// FileOperate1()的重载
/// 理解构造函数
/// </summary>
public void FileOperate1()
{
}
public static void Main()
{
try
{
FileOperate fo = new FileOperate();
#region 文件夹操作:是否存在,创建,删除
//string path = @"D:\MrSong1"; //正常路径
//string illeglePath = @"D:\111>"; //含有非法字符
//string overLengthPath = @"" + fo.GetLongPath(); //路径超长 //fo.DirectoryNomal(path); //正常 //fo.DirectoryNomal(illeglePath); //报“路径中存在非法字符异常”,下面的方法不执行 //fo.DirectoryNomal(overLengthPath); //修改illegalPath为正确路径后,执行此方法,报”指定路径名过长“
#endregion #region 文件操作
string filePath = @"D:\11.txt";
fo.FileOperate1(filePath);
File.Delete(filePath); //删除
#endregion }
catch (Exception ex)
{
Console.WriteLine(ex);
}
Console.ReadKey();
} /// <summary>
/// 文件夹操作
/// </summary>
/// <param name="path"></param>
private void DirectoryNomal(string path)
{
if (Directory.Exists(path))
{
Console.WriteLine("Directory类方法判断:存在路径");
Console.WriteLine("删除:" + path);
Directory.Delete(path); //删除
}
else
{
Console.WriteLine("Directory类方法判断:不存在" + path);
Console.WriteLine("创建:" + path);
Directory.CreateDirectory(path); //创建
}
DirectoryInfo dirInfo = new DirectoryInfo(path);
if (dirInfo.Exists)
{
Console.WriteLine("DirectoryInfo属性判断:存在路径" + path);
Console.WriteLine("DirectoryInfo删除:" + path);
dirInfo.Delete();
}
else
{
Console.WriteLine("DirectoryInfo属性判断:不存在路径");
Console.WriteLine("DirectoryInfo创建:" + path);
dirInfo.Create(); //创建路径
}
} /// <summary>
/// 获取长文件夹名称
/// </summary>
/// <returns></returns>
private string GetLongPath()
{
string path = "";
char[] Pattern = new char[] { '', '', '', '', '', '', '', '', '', '', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
System.Random random = new Random(~unchecked((int)DateTime.Now.Ticks));
int i = ;
int n = Pattern.Length; while (i <= )
{
int rnd = random.Next(, n);
path += Pattern[rnd];
i++;
}
return path;
} /// <summary>
/// 文件操作
/// </summary>
/// <param name="path"></param>
public void FileOperate1(string path)
{
if (File.Exists(path))
{
Console.WriteLine(path + "文件存在");
File.Delete(path);
}
else
{
Console.WriteLine(path + "文件不存在");
Console.WriteLine("创建该文件!");
File.Create(path);
}
File.WriteAllLines(path, new string[] { "Hello World!" });
}
}

文件,文件夹操作

注意:

1、Exists是Directory类的方法,在DirectoryInfo中是属性。
2、DirectoryInfo类初始化(构造函数)中会报异常,有非法字符串,超长,path为null,调用方没有权限错误。

C# 操作文件类,文件夹存在判断,创建,文件内容读写。的更多相关文章

  1. 判断文件是否存在,不存在创建文件&&判断文件夹是否存在,不存在创建文件夹

    1.判断文件是否存在,不存在创建文件 File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if( ...

  2. 如何使用python 新建文件夹以及递归创建文件夹

    转载:如何使用python 新建文件夹以及递归创建文件夹 | 酷python (coolpython.net) 1. os.mkdir 使用python创建文件夹,通常使用os.mkdir方法,在使用 ...

  3. Linux课程---5、常用文件命令和目录命令(创建文件命令)

    Linux课程---5.常用文件命令和目录命令(创建文件命令) 一.总结 一句话总结: touch file1 1.管道符|有什么用? 将前一个命令的结果作为后一个命令的输入:比如查看文件前3行:ca ...

  4. [FTP] FTPClient--FTP操作帮助类,上传下载,文件,目录操作 (转载)

    点击下载 FTPClient.zip 这个类是关于FTP客户端的操作1.构造函数 2.字段 服务器账户密码3.属性4.链接5.传输模式6.文件操作7.上传和下载8.目录操作9.内容函数看下面代码吧 / ...

  5. MFC下对文件及文件夹的操作(复制、剪切、删除、创建文件夹,写文件)

    一.文件夹的创建 void CFileOperationDlg::OnButtonMakeFolder() { // TODO: Add your control notification handl ...

  6. C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作

    FROM :http://www.sufeinet.com/forum.php?mod=viewthread&tid=1736&extra=page%3D1%26filter%3Dty ...

  7. Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作

    5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...

  8. Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】

    File(文件)类 File类用于封装一个路径,该路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径 File类内部封装的路径可以指向一个文件,也可以指向一个目录,在使用File ...

  9. renameTo()判断文件是否被占用(判断大文件是否完成拷贝这个动作)

    在开发需求中有一个需求是监控目录下拷贝进来的文件,并对文件进行处理, 使用的java.nio  . watchService 进行的处理,如果小文件还好一点,拷贝就是一瞬间的事情,但是如果是一个大文件 ...

  10. PHP操作FTP类 (上传下载移动创建等)

    使用PHP操作FTP-用法 Php代码 收藏代码 <? // 联接FTP服务器 $conn = ftp_connect(ftp.server.com); // 使用username和passwo ...

随机推荐

  1. `&nbsp;` `&emsp;` `&ensp;` `&thinsp;`

    字符实体 说明   这是我们使用最多的空格,也就是按下space键产生的空格.在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个).要使用html实体表示才可累加.   占据的宽度正好 ...

  2. idea 快捷键ctrl+shift+f失效的解决方案

    我是使用微软自带的拼音输入法,右下角图标--右键--设置--按键,拉到最下面 ---快捷键(简体繁体切换),取消勾选 即可

  3. 剑指offer面试题4: 二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  4. flask请求异步执行(转载)

    Flask默认是不支持非阻塞IO的,表现为: 当 请求1未完成之前,请求2是需要等待处理状态,效率非常低. 在flask中非阻塞实现可以由2种: 启用flask多线程机制 # Flask from f ...

  5. Struts2的JSON插件

    扎心了,老铁~这依然是一个注册. 1.reg.jsp <%@page contentType="text/html; charset=utf-8"%> <!DOC ...

  6. Vertica系列:Vertica和Hadoop的互操作性

    Vertica 8和 Hadoop 集群的互操作性已经很不错的, 但这块肯定是Vertica研发的重点, 将来可能还有较大的变动. Vertica 集群 和 Hadoop 集群的两种布局方式 集群布局 ...

  7. vue 用checkbox 做多选,带选中样式

    <dl v-for="(item,index) in listData" :key="index"> testName <label> ...

  8. Java动态代理 深度详解

    代理模式是设计模式中非常重要的一种类型,而设计模式又是编程中非常重要的知识点,特别是在业务系统的重构中,更是有举足轻重的地位.代理模式从类型上来说,可以分为静态代理和动态代理两种类型. 今天我将用非常 ...

  9. Javaweb学习笔记——(二十)——————Javaweb监听器、国际化

    Javaweb监听器     三大组件         *Servlet         *Listener         *Filter Listener:监听器         1.初次相见:A ...

  10. 四十一、Linux 线程——线程同步之条件变量

    41.1 概念 41.1.1 条件变量的介绍 互斥锁的缺点是它只有两种状态:锁定和非锁定 条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足 条件变量内部是一个等待队列,放置等待 ...