文件读写(一)利用File静态类 System.IO.FileInfo、DirectoryInfo、DriveInfo
提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建 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的更多相关文章
- 详解C#中System.IO.File类和System.IO.FileInfo类的用法
System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...
- 多种下载文件方式 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 ...
- System.IO.File类和System.IO.FileInfo类
1.System.IO.File类 ※文件create, copy,move,SetAttributes,open,exists ※由于File.Create方法默认向所有用户授予对新文件的完全读写. ...
- System.IO命名空间下常用的类
System.IO System.IO.Directory 目录 System.IO.Path 文件路径(包含目录和文件名) System.IO.FileInfo 提供创建.复制.删除.移动和打开文件 ...
- 【基础巩固】文件流读写、大文件移动 FileStream StreamWriter File Path Directory/ ,m资料管理器(递归)
C#获取文件名 扩展名 string fullPath = @"d:\test\default.avi"; string filename = Path.GetFileName(f ...
- (Unity)XML文件读写与IO文件操作类使用介绍
using System.Xml; //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...
- C# 文件读写系列二
读取文件原则上非常简单,但它不是通过FileInfo和DirectoryInfo来完成的,关于FileInfo和DirectoryInfo请参考C# 文件操作系列一,在.Net Framework4. ...
- C#文件读写(txt 简单方式)
1.文件写入 // 路径,写入内容 System.IO.File.WriteAllText(@".\File.txt", string.Empty); 可更换相应的方法 2.文件读 ...
- 09、IO流—File类与IO流
目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...
随机推荐
- sql 查找入职员工时间排名倒数第三(查找某一列特定排名)
查找入职员工时间排名倒数第三的员工所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL, ...
- git实现码云的上传和下载
上传步骤: 1.码云上新建一个项目 XXXX? ?(项目名) 2.本地创建一个文件夹E:/XXXX,然后使用git bash? ?? 3.cd 到本地文件夹中E:/XXXX? //如果是在创建的文件中 ...
- linux服务器搭建lnmp php 微擎环境备用
以前的时候装个php环境各种的配置麻烦啊,于是乎我就像搜搜一键安装php环境,果然 lamp 和phpstudy 两个环境软件都支持,最后发现lamp 还合胃口就选择了lamp https://lnm ...
- git config 介绍
转载. https://blog.csdn.net/liuxiao723846/article/details/83113317 Git的三个重要配置文件分别是/etc/gitconfig,${HOM ...
- 使用 react 的 hooks 进行全局的状态管理
使用 react 的 hooks 进行全局的状态管理 React 最新正式版已经支持了 Hooks API,先快速过一下新的 API 和大概的用法. // useState,简单粗暴,setState ...
- docker 启动 容器----bootstrap checks failed
错误信息: bootstrap checks failed 解决方法: 1.修改elasticsearch.yml配置文件,允许外网访问. vim config/elasticsearch.yml,增 ...
- Qt界面阴影效果(背景图片)
实现原理: 1.顶层窗体设置为无边框,背景半透明 2.顶层窗体的子窗体使用带有阴影的图片做背景 代码: //CMainWindow.h#ifndef CMAINWINDOW_H#define CMAI ...
- 第二次用map23333
度熊所居住的 D 国,是一个完全尊重人权的国度.以至于这个国家的所有人命名自己的名字都非常奇怪.一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字.例如, ...
- Jquery DataTables 服务器后端分页 Ajax请求添加自定义参数.
项目使用AdminLTE(基于Bootstrap 二次开发的框架)作为开发框架. 使用DataTables 的时候部分页面需要传参 给后台做筛选过滤. 但是不知道怎么将DataTables的参数 和自 ...
- iview的table组件中加入超链接组件,可编辑组件,选择组件,日期组件
这篇文章主要介绍了iview的table组件中使用选择框,日期,可编辑表格,超链接等组件. 1.select选择组件 // tableColumn数组响应对象需要传入一个固定的option数组,如果该 ...