C# FileInfo
下面的示例显示如何手动从文件读取字节,然后使用UTF8编码将它们转换为字符串:
示例:使用FileInfo类读取文件
//为指定路径创建FileInfo对象
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
//创建与FileStream长度相同大小的字节数组byte[] fileBytes = new byte[fs.Length];
//定义计数器以检查要读取多少字节。读取每个字节时减少计数器int numBytesToRead = (int)fileBytes.Length;
//计数器指示已读取的字节数int numBytesRead = 0;
//迭代直到从FileStream中读取所有字节while (numBytesToRead > 0)
{
int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
//从FileStream中读取所有字节后,即可使用UTF8编码将其转换为字符串string filestring = Encoding.UTF8.GetString(fileBytes);
如上面的代码所示,您必须编写许多代码才能从FileSream读取/写入字符串。而使用 StreamReader 和 StreamWriter 可以轻松完成相同的读/写操作。
下面的示例显示 StreamReader 如何使从文件中读取字符串变得容易:
示例:使用 StreamReader 读取文件
//为指定路径创建FileInfo对象
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read , FileShare.Read);
//通过传递需要对其进行操作的FileStream对象来创建StreamReader的对象
StreamReader sr = new StreamReader(fs);
//使用ReadToEnd方法从文件读取所有内容string fileContent = sr.ReadToEnd();
//操作后关闭StreamReader对象
sr.Close();
fs.Close();
注意,fi.Open() 它具有三个参数:
第一个参数是FileMode,用于创建和打开文件(如果文件不存在);
第二个参数 FileAccess 表示读取操作;
第三个参数是在打开文件时与其他用户共享文件以供阅读。
下面的示例显示 StreamWriter 如何使将字符串写入文件变得更容易:
示例:使用StreamWriter将文本写入文件
//为指定路径创建FileInfo对象
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开文件进行读\写
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read );
//创建StreamWriter对象以将字符串写入FileSream
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Another line from streamwriter");
sw.Close();
不能同时对同一个 FileStream 对象执行读和写操作。如果您已经在读取文件,请创建一个单独的 FileStream 对象以写入同一文件,如下所示:
示例:StreamReader和StreamWriter
//为DummyFile.txt创建FileInfo对象
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//打开DummyFile.txt进行读取操作
FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite , FileShare.ReadWrite);
//打开DummyFile.txt进行写操作
FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
//获取StreamReader
StreamReader sr = new StreamReader(fsToRead);
//使用StreamReader对象读取所有文本string fileContent = sr.ReadToEnd();
sr.Close();
//获取StreamWriter
StreamWriter sw = new StreamWriter(fsToWrite);
//用StreamWriter写一些文字
sw.WriteLine("Another line from streamwriter");
sw.Close();
//关闭所有Stream对象
fsToRead.Close();
fsToWrite.Close();
C# FileInfo相关推荐
- PHP7.3中fileinfo怎么安装与开启
摘要:安装lumen时创建项目时报错,需开启fileinfo 操作方法如下: cd /usr/local/src/php-7.3.13/ext/fileinfo/usr/local/php/bin/p ...
- File类与FileInfo类的区别
这些年代码也写了不少,关于文件I/O的操作也写了很多,基本上File类与FileInfo类也没有刻意的去看性能,有时用着也挺糊涂的,今天就将这些I/0操作总结下,老样子贴码 首先先了解清楚下File类 ...
- make: *** [ext/fileinfo/libmagic/apprentice.lo] Er
php-fpm编译make &&make install 出现了make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1 如上的错 ...
- C#之Directory类、DirectoryInfo类和Fileinfo,File以及FilesSystemInfo
一 两者的共同点 都用于典型的操作,如复制.移动.重命名.创建.打开.删除和追加到文件 默认情况下,将向所有用户授予对新文件的完全读写访问权限. 二 两者的区别 File类是静态类,由于所有的File ...
- File,FileInfo;Directory,DirectoyInfo的区别
曾经看过有文章说FileInfo.DirectoryInfo类主要用于文件.目录的属性,操作功能不强云云,似乎有忘文生义的嫌疑. 也说说自己的学习体会: 一. File,Dire ...
- Linux php安装fileinfo扩展
1.首先,找到扩展安装的位置 find / -name fileinfo 2.cd 到该位置(根据自己的具体情况来) cd /usr/local/src/php7/ext/fileinfo/ 3.不要 ...
- 关于搭建php电商环境时缺少fileinfo、数据库安装出错问题解决办法
今天以WSTMart电商系统为例讲解 搭建php电商环境缺少fileinfo.数据库安装出错问题找了很多方法都没能很好解决,该方法简单明了,容易操作 首先需要到开源中国中下载该系统源码,网址为:htt ...
- C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表
OpenFileDialog openFileDialog1 = new OpenFileDialog(); if(openFileDialog1.ShowDialog() == DialogResu ...
- c# DirectoryInfo 类和 FileInfo 类
1.DirectoryInfo 类 DirectoryInfo 类派生自 FileSystemInfo 类.它提供了各种用于创建.移动.浏览目录和子目录的方法.该类不能被继承. 2.FileInfo ...
- php7插件开发,php7.2.6 插件fileinfo的安装
1.首先,找到扩展的位置,将php-7.2.6.tar.bz2解压后在其ext/fileinfo处, tar -xvf php-7.2.6.tar.bz2 2.cd 到该位置(根据自己的具体情况来) ...
最新文章
- 【Storm】一张图搞定Storm的运行架构
- 报告软件测试错误的规范
- Linux 内核存缺陷:66% 安卓设备面临受攻击风险
- python把列表写入excel_用Python将列表写入Excel文件
- Echarts --- 各个省份的坐标
- android刷新时的圆形动画_Android动画篇(一):圆形进度条CircleProgressBar
- 通过curl获取网页访问时间
- html中图片响应式怎么写,如何使用 HTML5 的picture元素处理响应式图片
- C/C++编程笔记:C/C++ 的编译和链接
- Image flow使用
- 再品Resnet残差网络
- Delete带有子查询的sql优化,改为innerJoin解决
- 信息检索:“众筹”专利分析
- ganglia分布式监控系统
- 何园–中国晚清第一园
- Java基础:如何在IDEA中查看依赖关系
- 如何在Fcpx中卸载安装效果,标题,转场等FCPX模板插件
- 电脑开机时网络连接一直转圈,出现红叉
- 教程 | 扁平物体的摄影测量重建方案
- 获取咕咚运动移动应用中的数据——Python实现