C# 操作文件类,文件夹存在判断,创建,文件内容读写。
此篇文档是老早就放到草稿箱中了,断断续续编辑了几次。结合自己经常用到的对于文件的操作,结合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) | 打开一个文本文件,读取文件的所有行,然后关闭该文件。 |
|
创建一个新文件,向其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件。 |
|
| 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; }
|
| DirectoryName |
获取表示目录的完整路径的字符串。 |
public string DirectoryName { get; }
|
| Exists |
获取指示文件是否存在的值。 (覆盖 FileSystemInfo.Exists。) |
public override bool Exists { get; }
|
| Extension |
获取表示文件扩展名部分的字符串。 (继承自 FileSystemInfo。) |
public string Extension { get; }
|
| FullName |
获取目录或文件的完整目录。 (继承自 FileSystemInfo。) |
public virtual string FullName { get; }
|
| 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() | 获取应用程序的当前工作目录。 | 包含当前工作目录的路径且不以反斜杠 (\) 结尾的字符串。 |
| 名称 | 说明 | 语法 |
|---|---|---|
| Exists |
获取指示目录是否存在的值。(覆盖 FileSystemInfo.Exists。) |
public override bool Exists { get; }
|
| 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.判断文件是否存在,不存在创建文件 File file=new File("C:\\Users\\QPING\\Desktop\\JavaScript\\2.htm"); if( ...
- 如何使用python 新建文件夹以及递归创建文件夹
转载:如何使用python 新建文件夹以及递归创建文件夹 | 酷python (coolpython.net) 1. os.mkdir 使用python创建文件夹,通常使用os.mkdir方法,在使用 ...
- Linux课程---5、常用文件命令和目录命令(创建文件命令)
Linux课程---5.常用文件命令和目录命令(创建文件命令) 一.总结 一句话总结: touch file1 1.管道符|有什么用? 将前一个命令的结果作为后一个命令的输入:比如查看文件前3行:ca ...
- [FTP] FTPClient--FTP操作帮助类,上传下载,文件,目录操作 (转载)
点击下载 FTPClient.zip 这个类是关于FTP客户端的操作1.构造函数 2.字段 服务器账户密码3.属性4.链接5.传输模式6.文件操作7.上传和下载8.目录操作9.内容函数看下面代码吧 / ...
- MFC下对文件及文件夹的操作(复制、剪切、删除、创建文件夹,写文件)
一.文件夹的创建 void CFileOperationDlg::OnButtonMakeFolder() { // TODO: Add your control notification handl ...
- C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作
FROM :http://www.sufeinet.com/forum.php?mod=viewthread&tid=1736&extra=page%3D1%26filter%3Dty ...
- Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作
5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...
- Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】
File(文件)类 File类用于封装一个路径,该路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径 File类内部封装的路径可以指向一个文件,也可以指向一个目录,在使用File ...
- renameTo()判断文件是否被占用(判断大文件是否完成拷贝这个动作)
在开发需求中有一个需求是监控目录下拷贝进来的文件,并对文件进行处理, 使用的java.nio . watchService 进行的处理,如果小文件还好一点,拷贝就是一瞬间的事情,但是如果是一个大文件 ...
- PHP操作FTP类 (上传下载移动创建等)
使用PHP操作FTP-用法 Php代码 收藏代码 <? // 联接FTP服务器 $conn = ftp_connect(ftp.server.com); // 使用username和passwo ...
随机推荐
- myeclipse使用步骤总结
1.安装和破解:http://www.cnblogs.com/haimishasha/p/5203069.html 2.修改编码方式:http://www.cnblogs.com/haimishash ...
- HTML5 accesskey的用法
<button onclick="start()" accesskey="s">开始</button> <button oncli ...
- 使用 python -m SimpleHTTPServer 快速搭建http服务
摘要: 在 Linux 服务器上或安装了 Python 的机器上,可以使用 nohup python -m SimpleHTTPServer [port] & 快速搭建一个http服务. 在 ...
- HDU 1045(炮台安置 DFS)
题意是在 n*n 的方格中进行炮台的安置,炮台不能处于同一行或同一列(类似于八皇后问题),但若是炮台间有墙壁阻挡,则可以同时安置这对炮台.问图中可以安放的最大炮台数目. 用深搜的方法,若此处为空地,则 ...
- PHP7 学习笔记(十一)使用phpstudy快速配置一个虚拟主机
说明:为了windows本地开发php方便,这里推荐使用PHP集成环境phpstudy. 目的:使用域名访问项目(tinywan.test) 1.官网:http://www.phpstudy.net ...
- 微信小程序开发(5) 2048游戏
在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发2048小游戏. 本文主要分为两个部分,小程序主体部分及小游戏页面部分 一.小程序主体部分 一个小程序主体部分由三个文件组成,必须放在项目的 ...
- Weex Ui - Weex Conf 2018 干货分享
本文是2018年 Weex Conf 中议题<Weex + Ui>的内容文档整理,主要给大家介绍飞猪 Weex 技术体系从无到有的过程,包括 Weex Ui 组件库的开发和发展,重点分享在 ...
- getnameinfo函数
一.函数原型 #include <netdb.h> int getnamefo(const struct sockaddr *sockaddr, socklen_t addrlen, ch ...
- Gossip
http://www.cnblogs.com/xingzc/p/6165084.html 敬请期待...
- matplotlib-区域填充
import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl import datetime #解决能显示中文 ...