下面的示例显示如何手动从文件读取字节,然后使用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相关推荐

  1. PHP7.3中fileinfo怎么安装与开启

    摘要:安装lumen时创建项目时报错,需开启fileinfo 操作方法如下: cd /usr/local/src/php-7.3.13/ext/fileinfo/usr/local/php/bin/p ...

  2. File类与FileInfo类的区别

    这些年代码也写了不少,关于文件I/O的操作也写了很多,基本上File类与FileInfo类也没有刻意的去看性能,有时用着也挺糊涂的,今天就将这些I/0操作总结下,老样子贴码 首先先了解清楚下File类 ...

  3. make: *** [ext/fileinfo/libmagic/apprentice.lo] Er

    php-fpm编译make &&make install 出现了make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1 如上的错 ...

  4. C#之Directory类、DirectoryInfo类和Fileinfo,File以及FilesSystemInfo

    一 两者的共同点 都用于典型的操作,如复制.移动.重命名.创建.打开.删除和追加到文件 默认情况下,将向所有用户授予对新文件的完全读写访问权限. 二 两者的区别 File类是静态类,由于所有的File ...

  5. File,FileInfo;Directory,DirectoyInfo的区别

    曾经看过有文章说FileInfo.DirectoryInfo类主要用于文件.目录的属性,操作功能不强云云,似乎有忘文生义的嫌疑.     也说说自己的学习体会:     一.    File,Dire ...

  6. Linux php安装fileinfo扩展

    1.首先,找到扩展安装的位置 find / -name fileinfo 2.cd 到该位置(根据自己的具体情况来) cd /usr/local/src/php7/ext/fileinfo/ 3.不要 ...

  7. 关于搭建php电商环境时缺少fileinfo、数据库安装出错问题解决办法

    今天以WSTMart电商系统为例讲解 搭建php电商环境缺少fileinfo.数据库安装出错问题找了很多方法都没能很好解决,该方法简单明了,容易操作 首先需要到开源中国中下载该系统源码,网址为:htt ...

  8. C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表

    OpenFileDialog openFileDialog1 = new OpenFileDialog(); if(openFileDialog1.ShowDialog() == DialogResu ...

  9. c# DirectoryInfo 类和 FileInfo 类

    1.DirectoryInfo 类 DirectoryInfo 类派生自 FileSystemInfo 类.它提供了各种用于创建.移动.浏览目录和子目录的方法.该类不能被继承. 2.FileInfo ...

  10. php7插件开发,php7.2.6 插件fileinfo的安装

    1.首先,找到扩展的位置,将php-7.2.6.tar.bz2解压后在其ext/fileinfo处, tar -xvf php-7.2.6.tar.bz2 2.cd 到该位置(根据自己的具体情况来) ...

最新文章

  1. 【Storm】一张图搞定Storm的运行架构
  2. 报告软件测试错误的规范
  3. Linux 内核存缺陷:66% 安卓设备面临受攻击风险
  4. python把列表写入excel_用Python将列表写入Excel文件
  5. Echarts --- 各个省份的坐标
  6. android刷新时的圆形动画_Android动画篇(一):圆形进度条CircleProgressBar
  7. 通过curl获取网页访问时间
  8. html中图片响应式怎么写,如何使用 HTML5 的picture元素处理响应式图片
  9. C/C++编程笔记:C/C++ 的编译和链接
  10. Image flow使用
  11. 再品Resnet残差网络
  12. Delete带有子查询的sql优化,改为innerJoin解决
  13. 信息检索:“众筹”专利分析
  14. ganglia分布式监控系统
  15. 何园–中国晚清第一园
  16. Java基础:如何在IDEA中查看依赖关系
  17. 如何在Fcpx中卸载安装效果,标题,转场等FCPX模板插件
  18. 电脑开机时网络连接一直转圈,出现红叉
  19. 教程 | 扁平物体的摄影测量重建方案
  20. 获取咕咚运动移动应用中的数据——Python实现

热门文章

  1. 研华PCI1716L的C#编程
  2. apicloud 不干胶标签打印模块及开发
  3. 《沧浪之水》、《因为女人》作者阎真的最新作品《活着之上》的阅后笔记
  4. Linux 内核编程指南
  5. 信息学奥赛一本通1258:数字金字塔
  6. jaspersoft 报表设计器简单的使用(二)
  7. 强势解析eBay BASE模式、去哪儿及蘑菇街分布式架构
  8. 低频数字相位测量仪的介绍
  9. 国内网络环境安装QIIME2(100%成功)
  10. Wireshark抓包数据