10.数据流技术
在应用程序中,进程需要文件来保存数据,这就要用到对文件的输入/输出操作。本章主要介绍和文件相关的类,以及目录、文件操作和创建、读/写文件的方法
文件操作:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; // 这是一个处理文件流的命名空间 // 数据流技术:文件的操作 namespace Lesson_38_1 { class Program { static void Main(string[] args) { /* // example_1: 文件的创建和删除 // 创建一个文件。File类,File类是静态类。 string strFilePath = "D:\\test.txt"; if (!File.Exists(strFilePath)) { File.Create(strFilePath); // 创建文件 } Console.WriteLine("创建文件成功"); // File.Delete(strFilePath); // 删除文件 // Console.WriteLine("删除文件成功"); */ /* // example_2: 文件夹的创建和删除 string strDir = "D:\\testCS"; //Directory.CreateDirectory(strDir); //Console.WriteLine("创建文件夹成功"); Directory.Delete(strDir); Console.WriteLine("删除文件夹成功"); */ // example_3: 文件的读写操作 string strFilePath = "D:\\test.txt"; // 需要向文件写入数据 // 流的概念:指的是字符或字节序列的集合。 FileStream fstream = new FileStream(strFilePath, FileMode.OpenOrCreate); StreamWriter swriter = new StreamWriter(fstream); swriter.Write("hello,这是通过文件流写入的数据"); // 流使用完毕后,需要关闭和释放流资源 swriter.Close(); // 关闭 fstream.Close(); // 关闭 swriter.Dispose(); // 释放 fstream.Dispose(); // 释放 Console.WriteLine("写入数据完毕"); // 从文件读取数据 StreamReader sreader = new StreamReader(strFilePath); // 可以直接使用路径创建 读 或 写 string str = sreader.ReadToEnd(); Console.WriteLine("取到的数据:" + str); sreader.Close(); sreader.Dispose(); Console.WriteLine("取数据完毕"); } } }
文件流的操作:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; // 这个命名空间,就是我们对流的操作 // 文件流的操作 namespace Lesson_39_1 { class Program { static void Main(string[] args) { /* // example_1 // 文件流(字符或字节序列的集合) FileStream fstream = new FileStream("D:\\test.txt", FileMode.OpenOrCreate); StreamReader freader = new StreamReader(fstream); string str = freader.ReadToEnd(); Console.WriteLine("读出的数据:" + str); freader.Close(); // 关闭 fstream.Close(); // 关闭 freader.Dispose(); // 释放 fstream.Dispose(); // 释放 */ /* // example_2 // 读取文件的第二种方式:转成字节码然后再经过编码处理,通过编码处理之后得到数据。 FileStream fstream = new FileStream("D:\\test.txt", FileMode.OpenOrCreate); // 构建字节码 Byte[] bytes = new Byte[fstream.Length]; // 把流的数据读取到字节码 fstream.Read(bytes, 0, (int)fstream.Length); // 如果length太大,则可以采用一行一行读取 // 此时需要转码操作,按照一定的编码格式将字节码转换为字符串 string str = System.Text.Encoding.UTF8.GetString(bytes); Console.WriteLine("经过字节转码后的数据:" + str); fstream.Close(); fstream.Dispose(); */ // example_3 // 通过字节转码,将数据写入到文件中 FileStream fstream = new FileStream("D:\\test.txt", FileMode.OpenOrCreate); Console.WriteLine("请输入你想输入的数据:"); string strGet = Console.ReadLine(); // 把字符串数据转码,转成字节数组 Byte[] bytes = System.Text.Encoding.UTF8.GetBytes(strGet); // 把字节数组写入到文件中 fstream.Write(bytes, 0, bytes.Length); fstream.Flush(); // 清楚缓存区的内容 fstream.Close(); fstream.Dispose(); } } }