zoukankan      html  css  js  c++  java
  • C# 流介绍 (原发布 csdn 2017-09-15 23:37:52)

    1、FileStream

    FileStream 详细介绍参考msdn

    写数据:
    using (FileStream fs = new FileStream("File.FileStream", FileMode.Create, FileAccess.Write))
    {
        for (int i = 0; i < Cycles; i++)
        {
            for (int j = 0; j < Length; j++)
            {
                dis[j] = i * Length + j;
            }
            Buffer.BlockCopy(dis, 0, byData, i * readCount, readCount);
        }
        fs.Write(byData, 0, byData.Length);
    }
    
    读数据
    using (FileStream fs = new FileStream("File.FileStream", FileMode.Open, FileAccess.Read))
    {
        for (int i = 0; i < Cycles; i++)
        {
            fs.Seek(i * readCount, SeekOrigin.Begin);
            fs.Read(byData, 0, readCount);
            dis = new double[Length];
            Buffer.BlockCopy(byData, i * readCount, dis, 0, readCount);
        }
    }
    

    2、BinaryWriter/BinaryReader

    2.1 BinaryWriter(将二进制中的基元类型写入流并支持用特定的编码写入字符串。) 详细介绍参考msdn

    using (BinaryWriter bw = new BinaryWriter(File.Open("File.Binary", FileMode.Create)))
    {
        byte[] data = new byte[Cycles * readCount];
        for (int i = 0; i < Cycles; i++)
        {
            for (int j = 0; j < Length; j++)
            {
                dis[j] = i * Length + j;
            }
            Buffer.BlockCopy(dis, 0, data, i * readCount, readCount);
        }
        bw.Write(data);
    }
    

    2.2 BinaryReader (用特定的编码将基元数据类型读作二进制值。)详细介绍参考msdn

    using (BinaryReader wr = new BinaryReader(File.Open("File.Binary", FileMode.Open)))
    {
        for (int i = 0; i < Cycles; i++)
        {
            var readData = wr.ReadBytes(readCount);
            dis = new double[Length];
            Buffer.BlockCopy(readData, 0, dis, 0, readCount);
        }
    }
    

    3、StreamWriter/StreamReader

    3.1 StreamWriter 详细介绍参考msdn

     using (StreamWriter sw = new StreamWriter("File.Stream", false, Encoding.GetEncoding("utf-16")))
     {
         StringBuilder sb = new StringBuilder();
         for (int i = 0; i < Cycles; i++)
         {
             for (int j = 0; j < Length; j++)
             {
                 dis[j] = i * Length + j;
                 sb.AppendFormat("{0},", dis[j]);
             }
             sb.AppendFormat("
    ");
         }
         sw.WriteLine(sb);
     }
    

    3.2 StreamReader 详细介绍参考msdn

     using (StreamReader sd = new StreamReader("File.Stream", Encoding.GetEncoding("utf-16")))
     {
         for (int i = 0; i < Cycles; i++)
         {
             string[] ch = sd.ReadLine().Split(new Char[] { ',' },
                                               System.StringSplitOptions.RemoveEmptyEntries);
             for (int j = 0; j < Length; j++)
             {
                 double.TryParse(ch[j], out dis[j]);
             }
         }
     }
    

    4 完整测试代码:

    class Program
    {
        static void Main()
        {
            fileReadAndWrite.BinaryWriterMethod();
            fileReadAndWrite.BinaryReaderMethod();
           
            fileReadAndWrite.FileStreamWriterMethod();
            fileReadAndWrite.FileStreamReadMethod();
    
            fileReadAndWrite.StreamWriterMethod();        
            fileReadAndWrite.StreamReaderMethod();        
            
            Console.ReadKey(true);
        }
    }
    
    class FileReadAndWrite
    {
        private const int Length = 1024;
        private const int Cycles = 64;
        private int readCount;
        private byte[] byData;
        private double[] dis;
        
        public FileReadAndWrite()
        {
            readCount = Length * sizeof(double);
            dis = new double[Length];
            byData = new byte[Cycles * Length * sizeof(double)];
        }
        
        #region BinaryWriterBinaryReader        
        public void BinaryWriterMethod()
        {
            using (BinaryWriter bw = new BinaryWriter(File.Open("File.Binary", FileMode.Create)))
            {
                byte[] data = new byte[Cycles * readCount];
                for (int i = 0; i < Cycles; i++)
                {
                    for (int j = 0; j < Length; j++)
                    {
                        dis[j] = i * Length + j;
                    }
                    Buffer.BlockCopy(dis, 0, data, i * readCount, readCount);
                }
                bw.Write(data);
            }
        }
        
        public void BinaryReaderMethod()
        {
            using (BinaryReader wr = new BinaryReader(File.Open("File.Binary", FileMode.Open)))
            {
                for (int i = 0; i < Cycles; i++)
                {
                    var readData = wr.ReadBytes(readCount);
                    Buffer.BlockCopy(readData, 0, dis, 0, readCount);
                }
            }
        }    
        #endregion
            
        #region FileStream ReadWrite
        public void FileStreamWriterMethod()
        {
            using (FileStream fs = new FileStream("File.FileStream", FileMode.Create,FileAccess.Write))
            {
                for (int i = 0; i < Cycles; i++)
                {
                    for (int j = 0; j < Length; j++)
                    {
                        dis[j] = i * Length + j;
                    }
                    Buffer.BlockCopy(dis, 0, byData, i * readCount, readCount);
                }
                fs.Write(byData, 0, byData.Length);
            }
        }
        
        public void FileStreamReadMethod()
        {
            using (FileStream fs = new FileStream("File.FileStream", FileMode.Open, FileAccess.Read))
            {
                for (int i = 0; i < Cycles; i++)
                {
                    fs.Seek(i * readCount, SeekOrigin.Begin);
                    fs.Read(byData, 0, readCount);
                    Buffer.BlockCopy(byData, i * readCount, dis, 0, readCount);
                }
            }
        }
        #endregion
    
        #region StreamWriterStreamReader
        public void StreamWriterMethod()
        {
            using (StreamWriter sw = new StreamWriter("File.Stream", false, 
                                                      Encoding.GetEncoding("utf-16")))
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < Cycles; i++)
                {
                    for (int j = 0; j < Length; j++)
                    {
                        dis[j] = i * Length + j;
                        sb.AppendFormat("{0},", dis[j]);
                    }
                    sb.AppendFormat("
    ");
                }
                sw.WriteLine(sb);
            }
        }
        
        public void StreamReaderMethod()
        {
            using (StreamReader sd = new StreamReader("File.Stream", Encoding.GetEncoding("utf-16")))
            {
                for (int i = 0; i < Cycles; i++)
                {
                    string[] ch = sd.ReadLine().Split(new Char[] { ',' },
                                                      System.StringSplitOptions.RemoveEmptyEntries);
                    for (int j = 0; j < Length; j++)
                    {
                        double.TryParse(ch[j], out dis[j]);
                    }
                }
            }
        }
        #endregion
    }
    
  • 相关阅读:
    js-link下载文件
    sql-优化建议
    Studio-环境变量设置
    Studio
    Docker下安装ElasticSearch和Kibana
    sklearn 中的 r2_score
    R语言将所有列数据正交化/缩放
    R语言 random forests out-of-bag prediction
    R语言 coalesce 函数
    R语言 case_when 函数
  • 原文地址:https://www.cnblogs.com/njit-77/p/11469075.html
Copyright © 2011-2022 走看看