提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建 FileStream 对象。

一、读文件:

1、返回字符串:File.ReadAllText()

string readText = File.ReadAllText(@"c:\temp\MyTest.txt");

2、返回字符串数组:File.ReadAllLines()

string[] readText = File.ReadAllLines(@"c:\temp\MyTest.txt", Encoding.UTF8);

3、返回字节数组:File.ReadAllBytes()

byte[] buffer = File.ReadAllBytes(@"c:\temp\MyTest.txt");
string str = Encoding.Default.GetString(buffer, 0, buffer.Length);

4、返回StreamReader:File.OpenText()

打开现有的UTF-8文本以进行读取

using (StreamReader sr = File.OpenText(@"c:\temp\MyTest.txt"))
{
string s;
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}

二、写文件

创建一个新文件向其中写入内容,文件已存在则覆盖。

1、写入字符串:File.WriteAllText(),File.AppendAllText()

string createText = "Hello and Welcome" + Environment.NewLine;
File.WriteAllText(path, createText);

2、返回字符串数组:File.WriteAllLines()

string[] createText = { "Hello", "And", "Welcome" };
File.WriteAllLines(path, createText);

3、返回字节数组:File.WriteAllBytes()

string str = "哈哈哈哈哈哈";
byte[] buffer = Encoding.Default.GetBytes(str);
File.WriteAllBytes(path,buffer);

4、返回StreamWriter:File.CreateText()、File.AppendText()

创建或打开现有的UTF-8文本,以进行写入或追加

using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}

三、返回FileStream的操作

File.Open():默认为不共享、具有读/写访问权限

using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None))
{
byte[] b = new byte[1024];
UTF8Encoding temp = new UTF8Encoding(true); while (fs.Read(b, 0, b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
}
}

File.OpenRead():读访问权限

File.OpenWrite:写访问权限

using (FileStream fs = File.OpenWrite(path))
{
Byte[] info = new UTF8Encoding(true).GetBytes("This is to test the OpenWrite method."); // Add some information to the file.
fs.Write(info, 0, info.Length);
}

File.Create():

using (FileStream fs = File.Create(path))
{
Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
// Add some information to the file.
fs.Write(info, 0, info.Length);
}

四、File类的常用操作:

  • 文件删除方法:File.Delete()
  • 文件复制方法:File.Copy()
  • 文件移动方法:File.Move()
  • 设置文件属性方法:File.Set/Get***()
  • 判断文件是否存在的方法:File.Exist()

五、Directory类的常用操作:

  • CreateDirectory(String)    在指定路径中创建所有目录和子目录,除非它们已经存在。
  • Delete(String)    从指定路径删除空目录。
  • Delete(String, Boolean)    删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。
  • EnumerateDirectories(String)    返回指定路径中的目录名的可枚举集合。
  • EnumerateFiles(String)    返回指定路径中的文件名的可枚举集合。
  • EnumerateFileSystemEntries(String)    返回指定路径中的文件名和目录名的可枚举集合。
  • Exists(String)    确定给定路径是否引用磁盘上的现有目录。
  • GetCurrentDirectory()    获取应用程序的当前工作目录。
  • GetDirectories(String)    返回指定目录中的子目录的名称(包括其路径)。
  • GetDirectoryRoot(String)    返回指定路径的卷信息、根信息或两者同时返回。
  • GetFiles(String)    返回指定目录中文件的名称(包括其路径)。
  • GetFileSystemEntries(String)    返回指定路径中的所有文件和子目录的名称。
  • GetLogicalDrives()    检索此计算机上格式为“<drive letter>:\”的逻辑驱动器的名称。
  • GetParent(String)    检索指定路径的父目录,包括绝对路径和相对路径。
  • Move(String, String)    将文件或目录及其内容移到新位置。
//删除此目录
Directory.Delete(@"C:\新建文件夹") //删除此目录,true表示要是此目录有子目录也删除,否则就抛出异常
Directory.Delete(@"C:\新建文件夹", false); //此目录是否存在
bool b = Directory.Exists(@"C:\新建文件夹"); //根据路径返回此目录下的子目录
string[] dirs1 = Directory.GetDirectories(@"C:\新建文件夹"); //第二个参数表示:搜索的范围,就是搜索的文件夹包含“基础”关键字
string[] dirs2 = Directory.GetDirectories(@"C:\新建文件夹", "*.mp3"); //搜索目录下的所有文件
string[] files = Directory.GetFiles(@"C:\新建文件夹"); //第三个参数表示:指定搜索操作应包括所有子目录还是仅包括当前目录。
string[] files1 = Directory.GetFiles(@"C:\新建文件夹", "2.txt", SearchOption.AllDirectories); //(获取指定目录下的所有目录时返回一个DirectoryInfo数组。)
DirectoryInfo dirs = Directory.GetParent(@"C:\新建文件夹"); //移动、剪切。只能在同一个磁盘中。目录没有Copy方法。可以使用Move()方法实现重命名。
Directory.Move(@"F:\测试\33", @"F:\测试\32\33");

六、FileSystemInfo

派生类:

  • DirectoryInfo
  • FileInfo

FileInfo类

FileInfo类常用字段:

  • Name 提取文件名
  • Directory 所属目录
  • Exists 是否存在(继承自父类FileSystemInfo)
  • Extension 文件扩展名
  • Length 文件长度
  • IsReadOnly 是否为只读

FileInfo类常用方法:

  • Open() 打开文件
  • Create() 创建文件
  • CopyTo() 复制到新文件
  • Delete() 删除文件
  • MoveTo() 移动文件
  • Replace() 替换文件
  • EnCrypt() 加密文件
  • Decrypt() 解密文件

//实例化FileInfo进行操作
FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
myfile.CopyTo(destpath); //对文件进行复制操作,复制路径为destpath
myfile.MoveTo(destpath); //进行移动操作
myfile.Delete(); //进行删除操作 //获得某一文件或文件夹的详细信息(创建日期,最后一次修改日期等等)
FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
DateTime dt = myfile.CreationTime; //获取或设置文件/文件夹的创建日期
string filepath = myfile.DirectoryName; //仅能用于FileInfo,获得完整的路径名,路径+文件名
bool file = myfile.Exists; //此属性的值表示文件或文件夹是否存在,存在会返回True
string fullname = myfile.FullName; //获取文件或文件夹的完整路径名
DateTime lastTime = myfile.LastAccessTime; //获取或设置最后一次访问文件或文件夹的时间
DateTime lastWrite = myfile.LastWriteTime; //获取或设置最后一次修改文件夹或文件夹的时间
string name = myfile.Name; //获取文件名,不能修改哦
long length = myfile.Length; //返回文件的字节大小
//CreationTime,LastAccessTime,LastWriteTime都是可以被修改的。

DirectoryInfo类

属性

  • Attributes    获取或设置当前文件或目录的特性。 (Inherited from FileSystemInfo)
  • CreationTime    获取或设置当前文件或目录的创建时间。 (Inherited from FileSystemInfo)
  • Exists    获取指示目录是否存在的值。
  • Extension    获取表示文件扩展名部分的字符串。 (Inherited from FileSystemInfo)
  • LastAccessTime    获取或设置上次访问当前文件或目录的时间。 (Inherited from FileSystemInfo)
  • LastWriteTime    获取或设置上次写入当前文件或目录的时间。 (Inherited from FileSystemInfo)
  • Name    获取此 DirectoryInfo 实例的名称。
  • Parent    获取指定子目录的父目录。
  • Root    获取目录的根部分。

方法

  • Create()    创建目录。
  • CreateSubdirectory(String)    在指定路径上创建一个或多个子目录。 指定路径可以是相对于 DirectoryInfo 类的此实例的路径。
  • Delete()    如果此 DirectoryInfo 为空,则删除它。
  • EnumerateDirectories()    返回当前目录中的目录信息的可枚举集合。
  • EnumerateFiles()    返回当前目录中的文件信息的可枚举集合。
  • GetDirectories()    返回当前目录的子目录。
  • GetFiles() 返回当前目录的文件列表。
  • GetFileSystemInfos()    返回表示某个目录中所有文件和子目录的强类型 FileSystemInfo 项的数组。
  • MoveTo(String)    将 DirectoryInfo 实例及其内容移动到新路径。
DirectoryInfo dir = new DirectoryInfo(@"d:\C#程序设计");
if (!dir.Exists)
{
dir.Create();
}
else
{
Console.WriteLine("该目录已经存在");
}

七、DriveInfo类

在Windows操作系统中,存储介质统称为驱动器,硬盘由于可以划分为多个区域,每一个区域称为一个驱动器。

DriveInfo类的常用字段成员有DriveFormat(文件系统格式,如NTFS或FAT32)、DriveType(驱动器类型)、Name(驱动器名)、TotalSize(总空间)、TotalFreeSpace(获得驱动器可用空间)。常用的方法成员有GetDrives(获得可用驱动器列表)。

DriveType枚举型的枚举值有CDRom(光驱)、Fixed(硬盘)、Network(网络驱动器)和Removeable(软盘或U盘)等。

例如,以下代码可以输出每一个硬盘驱动器的剩余空间信息。

DriveInfo[] drivers = DriveInfo.GetDrives();
foreach (DriveInfo driver in drivers)
{
if (driver.DriveType == DriveType.Fixed && driver.DriveFormat == "NTFS")
{
Console.WriteLine("在{0}驱动器上还有{1}字节的剩余空间。", driver.Name, driver.AvailableFreeSpace);
}
}

文件读写(一)利用File静态类 System.IO.FileInfo、DirectoryInfo、DriveInfo的更多相关文章

  1. 详解C#中System.IO.File类和System.IO.FileInfo类的用法

    System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...

  2. 多种下载文件方式 Response.BinaryWrite(byte[] DocContent);Response.WriteFile(System.IO.FileInfo DownloadFile .FullName);Response.Write(string html2Excel);

    通过html给xls赋值,并下载xls文件 一.this.Response.Write(sw.ToString());System.IO.StringWriter sw = new System.IO ...

  3. System.IO.File类和System.IO.FileInfo类

    1.System.IO.File类 ※文件create, copy,move,SetAttributes,open,exists ※由于File.Create方法默认向所有用户授予对新文件的完全读写. ...

  4. System.IO命名空间下常用的类

    System.IO System.IO.Directory 目录 System.IO.Path 文件路径(包含目录和文件名) System.IO.FileInfo 提供创建.复制.删除.移动和打开文件 ...

  5. 【基础巩固】文件流读写、大文件移动 FileStream StreamWriter File Path Directory/ ,m资料管理器(递归)

    C#获取文件名 扩展名 string fullPath = @"d:\test\default.avi"; string filename = Path.GetFileName(f ...

  6. (Unity)XML文件读写与IO文件操作类使用介绍

    using System.Xml;                //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...

  7. C# 文件读写系列二

    读取文件原则上非常简单,但它不是通过FileInfo和DirectoryInfo来完成的,关于FileInfo和DirectoryInfo请参考C# 文件操作系列一,在.Net Framework4. ...

  8. C#文件读写(txt 简单方式)

    1.文件写入 // 路径,写入内容 System.IO.File.WriteAllText(@".\File.txt", string.Empty); 可更换相应的方法 2.文件读 ...

  9. 09、IO流—File类与IO流

    目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...

随机推荐

  1. JavaFX窗体设置无边框

    public void start(Stage stage) throws Exception { longStart(); Parent root = FXMLLoader.load(getClas ...

  2. ztree节点名称排序

    // result 为后台返回的集合,在渲染tree前的数据 result = result.sort(function (a, b) { // 判断前面一个是字母,后面一个不是字母,那么不换位置,返 ...

  3. IdentityServer4 学习三

    ClientCredentials客户端类型实现 客户端应用向IdentityServer请求AccessToken,IdentityServer验证通过把AccessToken返回给客户端应用,客户 ...

  4. 湖北校园网PC端拨号算法逆向

    湖北校园网PC端拨号算法逆向 前言 上一文 PPPoE中间人拦截以及校园网突破漫谈我们谈到使用 PPPoE 拦截来获取真实的账号密码. 在这个的基础上,我对我们湖北的客户端进行了逆向,得到了拨号加密算 ...

  5. Codeforces Round #576 (Div. 1) 简要题解 (CDEF)

    1198 C Matching vs Independent Set 大意: 给定$3n$个点的无向图, 求构造$n$条边的匹配, 或$n$个点的独立集. 假设已经构造出$x$条边的匹配, 那么剩余$ ...

  6. VMWare linux虚拟机(centos没有GUI)联网(NAT模式)

    使用yum list命令查看是否能连上网. 不能联网,需要对centos进行网络配置.但在此之前,需要: 1. 虚拟机网络连接方式设置成NAT. 2. window系统下的两个服务VMwareDHCP ...

  7. OOM与StackOverFlow发生的原因及解决办法【待完成】

    1,Out Of Memery 内存耗尽 1,1 产生原因 1.1.1 内存用完[堆内存] package com.cnblogs.mufasa; import org.junit.Test; imp ...

  8. 2019年6月车型数据Access数据库+缩略图 更新于2019年6月5日.

    工作需要才来采集的, 数据来源某卡汽车网, 分享出来给需要的人吧, 本着分享的精神, 我就不猥琐的放到csdn下载了 本来是sql server的, 我导出到access了, 也方便大家查看. 顺手抓 ...

  9. View Controller Programming Guid for iOS 笔记

    1.View Controller 基础 1.1 View Controller 分类 ViewController分为container view controller 和content view ...

  10. js几种数组排序及sort的实现

    给出以下数组,并进行排序处理 var arr = new Array('1','3','8','2','3','5'); 1. 插入法排序 Array.prototype.csSort = funct ...