C#实现stream读写文件

 读写文件在实际运用中比较多的,自己总结记下了,方便复用,给大家参考下

第一种方式:

   /// <summary>
        /// 写文件
        /// </summary>
        /// <param name="path">保存路径</param>
        /// <param name="message">内容</param>
        /// <param name="append">是否追加还是覆盖</param>
        public static void WriterFile(string path,string message,bool append) {
            using (StreamWriter swtrain = new StreamWriter(path, append, Encoding.UTF8))
            {            
                    swtrain.WriteLine(message);            
            }
        }
       /// <summary>
     /// 读取文件
     /// </summary>
     /// <param name="path"></param>
        public static void ReadFile(string path) {
            using (StreamReader sr = new StreamReader(path, Encoding.UTF8))
            {
                string line;
                while ((line = sr.ReadLine()) != null)//读取每一行数据
                {
                    Console.WriteLine(line.ToString());
                }
            }           
        }    

第二种方式:


        /// <summary>
        /// 写入文件
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="message">信息</param>
        public static void stream2File(string path,string  message)
        {
            byte [] buffer=Encoding.UTF8.GetBytes(message);
            bytetTostream(buffer);
             FileStream fs = new FileStream(path, FileMode.Create);
            BinaryWriter writer = new BinaryWriter(fs);
            writer.Write(buffer);
            writer.Close();
            fs.Close();
        }
        /// <summary>
        /// 读取文件
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static void file2Stream(string path)
        {
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            byte[] buffer=stream2byte(fs);
            Stream stream = new MemoryStream(buffer);
            stream.Seek(0, SeekOrigin.Begin);
            StreamReader sr = new StreamReader(stream);
            string line;
            while ((line = sr.ReadLine()) != null)//读取每一行数据
            {
                Console.WriteLine(line.ToString());
            }
        }
        /// <summary>
        /// stream 转为byte[]
        /// </summary>
        /// <param name="stream"></param>
        /// <returns></returns>
        public static byte[] stream2byte(Stream stream)
        {
            byte[] buffer = new byte[stream.Length];
            stream.Read(buffer, 0, buffer.Length);
            return buffer;
        }
        /// <summary>
        /// byte[] 转stream
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static Stream bytetTostream(byte[] buffer)
        {
            Stream stream = new MemoryStream(buffer);
            stream.Seek(0, SeekOrigin.Begin);
            //设置stream的position为流的开始
            return stream;
        }

一看就知道第一种方式比较好,代码量少,简洁。写第二种作为参考,它们都是继承stream,

猜你喜欢

转载自blog.csdn.net/qq_42335551/article/details/82700620