博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET I/O 学习笔记:文件的读和写
阅读量:6350 次
发布时间:2019-06-22

本文共 2770 字,大约阅读时间需要 9 分钟。

我们在对文件进行读写操作时首先需要把文件转换成文件流(FileStream)对象。Stream类及其派生类(包括FileStream类)都提供了Read和Write方法,可支持在字节级别对数据进行读写。假如我们的程序需要将字符数据写入到流中,需要先将字符数据转换为字节数据之后才能将数据写入到流中。所以.NET为我们提供了一下更方便的支持对流进行读写的类:和、和。

1.使用BinaryWriter 和 BinaryReader 对象

  BinaryWriter:以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。

  BinaryReader:用特定的编码将基元数据类型读作二进制值。

 

下面是示例代码:

1         public static void WriterReadFile(string filePath) 2         { 3             FileStream fs = null; 4             if (File.Exists(filePath)) 5             { 6                 Console.WriteLine("文件已存在."); 7                 //return; 8             } 9             using (fs = new FileStream(filePath, FileMode.Create))10             {11                 BinaryWriter bw = new BinaryWriter(fs);12                 for (int i = 0; i <= 10; i++)13                 {14                     bw.Write(i);15                 }16             }17             using (fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))18             {19                 BinaryReader br = new BinaryReader(fs);20                 for (int i = 0; i <= 10; i++)21                 {22                     Console.WriteLine(br.ReadInt32());23                 }24             }25         }

 

2.使用StreamWriter和StreamReader对象 

  StreamWriter:实现一个 ,使其以一种特定的编码向流中写入字符。

  StreamReader:实现从字符串进行读取的 。

 

下面是示例代码:

1  class Program 2     { 3         static void Main(string[] args) 4         { 5             //如果文件不存在则创建文件 6             using (StreamWriter sw = File.AppendText("log.txt")) 7             { 8                 WriteLog("日志1", sw); 9                 WriteLog("日志2", sw);10                 sw.Close();11             }12             using (StreamReader sr = File.OpenText("log.txt"))13             {14                 ReadLog(sr);15             }16 17             Console.Read();18         }19 20         /// 21         /// 记录日志22         /// 23         /// 日志信息24         /// StreamWriter父类对象25         public static void WriteLog(string logMessage, TextWriter sw)26         {27             sw.Write("Log 开始:");//在.Net 4.5提供了异步读写方法28             sw.WriteLine("{0} {1}",DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());29             sw.WriteLine(" :");30             sw.WriteLine(" :{0}", logMessage);31             sw.WriteLine("-----------------------------");32             //更新文件文本33             sw.Flush();34         }35 36         /// 37         /// 读取日志38         /// 39         /// 40         public static void ReadLog(StreamReader sr)41         {42             string line;43             while((line =sr.ReadLine())!=null)44             {45                 Console.WriteLine(line);46             }47             sr.Close();48         }49     }

 

猛击下载:

参考资料:

本文转自gyzhao博客园博客,原文链接:http://www.cnblogs.com/IPrograming/archive/2012/08/30/Base_IO_2.html,如需转载请自行联系原作者

你可能感兴趣的文章
M1卡破解(自从学校升级系统之后,还准备在研究下)【转】
查看>>
vue 访问子组件示例 或者子元素
查看>>
linux内核--自旋锁的理解
查看>>
银行卡的三个磁道
查看>>
OpenSSL 提取 pfx 数字证书公钥与私钥
查看>>
Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
查看>>
CollapsingToolbarLayoutDemo【可折叠式标题栏,顺便带有CardView卡片式布局】
查看>>
CentOS7.4安装配置mysql5.7 TAR免安装版
查看>>
解决IE二级链接无法打开故障
查看>>
Windows phone应用开发[16]-数据加密
查看>>
SQL Server 迁移数据到MySQL
查看>>
通用数据压缩算法简介
查看>>
The next Industry Standard in IT Monitoring, a python implementation Nagios like tool --- Shinken
查看>>
(笔记)找工作,该怎么进补
查看>>
div的显示和隐藏以及点击图标的更改
查看>>
(轉貼) Ubuntu將在ARM平台netbook上現身 (SOC) (News) (Linux) (Ubuntu)
查看>>
SQL注入测试工具:Pangolin(穿山甲)
查看>>
在html 的img属性里只显示图片的部分区域(矩形,给出开始点和结束点),其他部份不显示,也不要拉伸...
查看>>
程序员第二定律:量化管理在程序员身上永无可能
查看>>
ubuntu一些脚本的执行顺序
查看>>