C#学习笔记-文件写入和读取(实现原理和现有方法)

using System;
using System.IO;
using System.Text;

namespace 文件写入和读取
{
    class Program
    {
        static void Main(string[] args)
        {
            //文件写入1

            string str = "hello world";//新建一个字符串
            byte[] bytes = Encoding.UTF8.GetBytes(str);
            //用 UTF8 标准,转换字符串里的内容进一个 byte 数组
            FileStream fileStream = new FileStream("MyFile.txt", FileMode.Create);
            //创建一个 “MyFile.txt” 文档
            fileStream.Write(bytes, 0, bytes.Length);
            //调用 FileStream 类里 Write方法 写入字符
            fileStream.Close();
            //手动调用Close方法,释放内存,因为写入的文件会进入非托管堆,不会自动GC

            
            //new FileStream("MyFile.txt", FileMode.Create)的时候,可以有一些其他的功能:
            
            // "../MyFile.txt" 上一层目录
            // "save/MyFile.txt" 当前路径下的 save 文件内(如果有该文件夹)
            // "D://MyFile.txt"绝对路径,可以指定写在哪个盘里


            //文件写入2

            //创建文件夹
            if (!Directory.Exists("save"))//(先判断当前路径是否有 save 文件夹)
            {
                DirectoryInfo directory = Directory.CreateDirectory("save");
                //创建一个“save”文件夹
            }
            string str1 = "hello\nworld2";
            byte[] bytes1 = Encoding.UTF8.GetBytes(str1);

            using (FileStream fileStream1 = new FileStream("save/MyFile2.txt", FileMode.Create))
            {
                fileStream1.Write(bytes1, 0, bytes1.Length);
            }


            //文件读取
            try
            {
                using(FileStream reader = new FileStream("save/MyFile2.txt", FileMode.Open))
                {
                    byte[] bytes2 = new byte[reader.Length];
                    reader.Read(bytes2, 0, bytes2.Length);
                    string str2 = Encoding.UTF8.GetString(bytes2);
                    string[] lines = str2.Split("\r\n");
                    Console.WriteLine("读取的内容是" + str2);

                    foreach (var item in lines)
                    {
                        Console.WriteLine(item);
                    }

                }
            }
            catch (Exception e)
            {

                Console.WriteLine(e.Message);
            }

            
            //C#已经封装好的文件写入和读取方法:WriteAllText和ReadAllLines

            string str3 = "111 222 333";
            File.WriteAllText("MyFile2.txt", str3);

            string[] allLines = File.ReadAllLines("MyFile2.txt");
            foreach (var item in allLines)
            {
                Console.WriteLine(item);
            }

        }
    }
}

Guess you like

Origin blog.csdn.net/Erenlui/article/details/121642422