zoukankan      html  css  js  c++  java
  • .NET FileStream文件流,StreamReader文本流,MemoryStream内存流几种流的实例

    一、FileStream文件流

    1.读取数据

     1    public class ReadFile
     2     {
     3         /// <summary>
     4         /// 读取文件
     5         /// FileMode.Create  创建一个新文件,如果文件已经存在则改写旧文件
     6         /// FileMode.CreateNew 创建一个文件,如果文件存在会发生异常,提示文件已经存在
     7         /// FileMode.Open  打开文件,如果文件不存在则异常
     8         /// FileMode.OpenOrCreate  打开文件,如果文件不存在,则创建一个新的文件并且打开文件
     9         /// FileMode.Append   打开现有文件,并且在现有文件内容后面追加,如果文件不存在则异常
    10         /// FileMode.Truncate 根据现有操作系统,截取文件里面的内容,如果文件不存在则异常
    11         /// </summary>
    12         public static void Read(string FilePath)
    13         {
    14             FileStream fileStream = null;
    15             try
    16             {
    17               fileStream = new FileStream(FilePath, FileMode.Truncate);
    18                 byte[] bytes = new byte[fileStream.Length];
    19                 int read = fileStream.Read(bytes, 0, bytes.Length);
    20                 var result = Encoding.UTF8.GetString(bytes);
    21             }
    22             catch (Exception e)
    23             {
    24                 if (fileStream != null)
    25                 {
    26                     fileStream.Dispose();
    27                 }
    28                 Console.WriteLine(e.Message);
    29             }
    30             finally
    31             {
    32                 if (fileStream != null)
    33                 {
    34                     fileStream.Close();
    35                     fileStream.Dispose();
    36                 }
    37             }
    38         }
    39     }

    2.写入数据

     1    public class WriteFile
     2     {
     3         public static void WriteText(string FilePath,string writeString)
     4         {
     5             FileStream fileStream = null;
     6             try
     7             {
     8                 //根据路径打开文件
     9                 fileStream = new FileStream(@"C:UsersAdministratorsource
    eposOperatFileOperatFile1.txt", FileMode.Append);
    10                 //把字符串转化成字节
    11                 byte[] bytes = Encoding.UTF8.GetBytes(writeString);
    12                 //写入到文件
    13                 fileStream.Write(bytes, 0, bytes.Length);
    14             }
    15             catch (Exception e)
    16             {
    17           if (fileStream != null)
    18                 {
    19                     fileStream.Dispose();
    20                 }
    21                 Console.WriteLine(e.Message);
    22             }
    23             finally
    24             {
    25                 //关闭和释放
    26                 if (fileStream != null)
    27                 {
    28                     fileStream.Close();
    29                     fileStream.Dispose();
    30                 }
    31             }
    32         }
    33     }

    二、StreamReader文本流

    1.读取数据

     1    public class SteamReadFile
     2     {
     3         /// <summary>
     4         /// 读取文件
     5         /// </summary>
     6         /// <param name="filePath">文件路径</param>
     7         public static void ReadFile(string FilePath)
     8         {
     9             try
    10             {
    11                 using (StreamReader sr = new StreamReader(FilePath))
    12                 {
    13                     var result = sr.ReadToEnd();
    14                     Console.WriteLine(result);
    15                 }
    16             }
    17             catch (Exception e)
    18             {
    19 
    20                 throw new Exception(e.Message);
    21             }
    22         }
    23     }

    2.写入数据

     1    public class StreamWriteFile
     2     {
     3         /// <summary>
     4         /// 写入文件
     5         /// </summary>
     6         /// <param name="FilePath">文件路径</param>
     7         /// <param name="WriteString">待写入字符串</param>
     8         public static void WriteFile(string FilePath,string WriteString)
     9         {
    10             try
    11             {
    12                 using (StreamWriter sr = new StreamWriter(FilePath))
    13                 {
    14                     sr.WriteLine(WriteString);
    15                 }
    16             }
    17             catch (Exception e)
    18             {
    19                 throw new Exception(e.Message);
    20             }
    21         }
    22     }

    3.写入日志实例

     1    public class LogHelper
     2     {
     3         /// <summary>
     4         /// 文件路径
     5         /// </summary>
     6         public static string FilePath = @"C:UsersAdministratorsource
    eposOperatFileOperatFileFiles";
     7         static LogHelper()
     8         {
     9             //判断文件夹是否存在,如果不存在,则重新创建
    10             if (!Directory.Exists(FilePath))
    11             {
    12                 Directory.CreateDirectory(FilePath);
    13             }
    14         }
    15      /// <summary>
    16         /// 日志写入
    17         /// Path.Combine(str1,str2,str3)  把传入的参数拼接起来,然后返回新的字符串
    18         /// File.AppendText(fullPath) 根据文件路径,把新写入的内容,拼接到文本后面
    19         /// </summary>
    20         public static void WriteLog()
    21         {
    22             try
    23             {
    24                 var sb = BindData();
    25                 string fullPath = Path.Combine(FilePath, $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt");
    26                 //判断文件是否存在,如果不存在,则新建文件
    27                 if (!File.Exists(fullPath))
    28                 {
    29                     File.Create(fullPath);
    30                 }
    31                 using (StreamWriter sw = File.AppendText(fullPath))
    32                 {
    33                     sw.WriteLine(sb.ToString());
    34                 }
    35             }
    36             catch (Exception e)
    37             {
    38                 throw new Exception(e.Message);
    39             }
    40 
    41         }
    42      /// <summary>
    43         /// 绑定日志信息
    44         /// </summary>
    45         /// <returns></returns>
    46         private static StringBuilder BindData()
    47         {
    48             StringBuilder sb = new StringBuilder();
    49             DateTime operatDateTime = DateTime.Now;
    50             string content = "读写文件功能";
    51             string operators = "小明";
    52             sb.AppendLine($"操作时间:{operatDateTime}");
    53             sb.AppendLine($"操作内容:{content}");
    54             sb.AppendLine($"操作人:{operators}");
    55             sb.AppendLine("------------------------------------------------------------------------------------------");
    56             return sb;
    57         }
    58     }

    三、MemoryStream内存流

     1      /// <summary>
     2         /// 根据URL读取内容到内存流
     3         /// </summary>
     4         /// <param name="url"></param>
     5         /// <returns></returns>
     6         public static string DownLoadByUrl(string url)
     7         {
     8             string result = string.Empty;
     9             MemoryStream ms = null;
    10             HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    11             HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    12             using (var stream = response.GetResponseStream())
    13             {
    14           byte[] buffer = new byte[response.ContentLength];
    15                 int actuallyRead = 0, offset = 0;
    16                 do
    17                 {
    18                     actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);
    19                     offset += actuallyRead;
    20 
    21                 } while (actuallyRead > 0);
    22                 ms = new MemoryStream(buffer);
    23                 ms.Seek(0, SeekOrigin.Begin);
    24                 var byteArray = new byte[ms.Length];
    25                 ms.Read(byteArray, 0, byteArray.Length);
    26                 result = Encoding.UTF8.GetString(byteArray);
    27             }
    28             response.Close();
    29             response.Dispose();
    30             return result;
    31         }
    将来的你,一定会感谢现在努力的自己!
  • 相关阅读:
    python note 30 断点续传
    python note 29 线程创建
    python note 28 socketserver
    python note 27 粘包
    python note 26 socket
    python note 25 约束
    Sed 用法
    python note 24 反射
    python note 23 组合
    python note 22 面向对象成员
  • 原文地址:https://www.cnblogs.com/GreatPerson/p/11041566.html
Copyright © 2011-2022 走看看