.NET I/O 学习笔记:文件的读和写

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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

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实现一个 TextWriter,使其以一种特定的编码向流中写入字符。

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

 

下面是示例代码:

复制代码
 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         /// <summary>
21         /// 记录日志
22         /// </summary>
23         /// <param name="logMessage">日志信息</param>
24         /// <param name="sw">StreamWriter父类对象</param>
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         /// <summary>
37         /// 读取日志
38         /// </summary>
39         /// <param name="sr"></param>
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     }
复制代码

 

猛击下载:示例源码

参考资料:

http://msdn.microsoft.com/zh-cn/library/36b93480(v=vs.100)

http://msdn.microsoft.com/zh-cn/library/3zc0w663(v=vs.100)

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
19天前
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
39 12
|
2月前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
|
3月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
4月前
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
|
5月前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
104 4
|
5月前
|
开发框架 .NET Linux
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
|
6月前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
6月前
|
算法 API 数据安全/隐私保护
.NET使用原生方法实现文件压缩和解压
.NET使用原生方法实现文件压缩和解压
.NET使用原生方法实现文件压缩和解压
|
6月前
|
存储 C#
.NET使用CsvHelper快速读取和写入CSV文件
.NET使用CsvHelper快速读取和写入CSV文件
|
7月前
|
存储 C#
.NET使用CsvHelper快速读取和写入CSV文件
优秀项目和框架精选 该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。