zoukankan      html  css  js  c++  java
  • 编码实现>文件和输入输出>Stream流

    编码实现>文件和输入输出>Stream流>

    Stream流是一组连续存放的数据,具有开头和结尾,并且使用游标指示当前位置。

    Stream流包含的数据可来自内存MemoryStream,文件FileStream,或TCP/IP套接字NetWorkStream。

    流支持的操作:

    读取,数据从Stream流传输到数据结构(字符串或字符节数组)中。

    写入,数据从数据源传输到Stream流。

    查找,查询和修改你在Stream流的位置。

    编码实现>文件和输入输出>Stream流>创建一个文件流

    描述,创建一个文件path,并指定文件模式FileMode,访问权限FileAccess,共享访问权限FileShare。

    编码实现>文件和输入输出>Stream流>获取和设置文件流属性信息

    描述,判断Stream流是否可读,可定为,可写。

    创建一个文件流,获取和设置文件流属性信息
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace FileStreamDemo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string FilePath=@"C:\MyData.dat";
                
    using (FileStream fs = new FileStream(FilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
                {
                    Console.WriteLine(
    "流是否支持可读{0}", fs.CanRead);
                    Console.WriteLine(
    "流是否支持可写{0}", fs.CanWrite);
                    Console.WriteLine(
    "流是否支持可查找{0}", fs.CanSeek);
                    Console.WriteLine(
    "流当前的位置在{0}", fs.Position);
                    Console.WriteLine(
    "流是否是异步方式打开{0}", fs.IsAsync);
                    Console.WriteLine(
    "流的长度为{0}", fs.Length);
                    fs.SetLength(
    20);
                    Console.WriteLine(
    "流的新长度为{0}", fs.Length);
                }
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>Stream流>定位和读取/写入字节数组到文件流中

    定位和读取/写入字节数组到文件流中
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    namespace FileStreamReadandwrite
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    //使用相对文件位置
                const string FilePath = "FileStreamDemo.dat";
               
    // 创建一个用于写入FileStream的随机数据
                byte[] DataArry = new byte[100000];
                
    new Random().NextBytes(DataArry);

                
    using (FileStream fs = new FileStream(FilePath, FileMode.Create,FileAccess.ReadWrite,FileShare.None))
                {
                      
    //逐字节的写入数据到FileStream
                    for (int i = 0; i < DataArry.Length; i++)
                    {
                        fs.WriteByte(DataArry[i]);
                    }
                    
    //从开头位置偏移0字节,即定位到文件流的开头位置
                    fs.Seek(0, SeekOrigin.Begin);
                    
    // 校验数据,使用ReadByte()逐字节的比较
                    for (int i = 0; i < fs.Length; i++)
                    {
                        
    if (DataArry[i] != fs.ReadByte())
                        {
                            Console.WriteLine(
    "写入数据失败,数据内容不匹配!");
                            
    return;
                        }
                    }
                    Console.WriteLine(
    "数据己经被写入 {0} 并且经过校对", fs.Name);
                }
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>Stream流>流写入类StreamWriter>创建StreamWriter实例

    StreamWriter类专为写入字符或字符行而设计。继承于抽象类TextWrtier

    创建StreamWriter实例
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace sw
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
               
    const string filePath=@"C:\StreamWriterDemo.txt";
                
    //使用Stream类来构造StreamWriter
               using (FileStream fs = File.Create(filePath))
               {
                   
    using (StreamWriter sw = new StreamWriter(fs))
                   {
                       sw.WriteLine(
    "使用流类来构造StreamWriter!");
                   }
               }
                
    //使用指定的文件路径来构造StreamWriter。
               using (StreamWriter sw2 = new StreamWriter(filePath))
               {
                   sw2.WriteLine(
    "使用指定的文件路径来构造StreamWriter");
               }          
            }
        }
    }


    编码实现>文件和输入输出>Stream流>流写入类StreamWriter>使用StreamWriter写入文本

    描述:创建文本,写入文本。

    使用StreamWriter写入文本
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    namespace swWrite
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string filePath = @"C:\StreamWriterDemo.txt";
                
    //使用Stream类来构造StreamWriter
                using (FileStream fs = File.Create(filePath))
                {
                    
    using (StreamWriter sw = new StreamWriter(fs))
                    {
                        sw.WriteLine(
    "使用流类来构造StreamWriter!");
                        
    //写入一个布尔值;
                        sw.Write(true);
                        sw.Write(
    12);
                        sw.WriteLine(
    'A');
                        sw.WriteLine(
    new string[2] { "StreamWriter""StreamReader" });
                        sw.WriteLine(
    "现在是时间是{0}", DateTime.Now.ToShortTimeString());
                        sw.WriteLine(
    "你叫什么名字".ToCharArray());
                    }
                }
            }
        }
    }


    编码实现>文件和输入输出>Stream流>流读取类StreamReader>创建StreamReader实例

    StreamReader类用于读取字节数组或字符,包含单个字符,字符块,字符行或整个文件读入一个串变量。继承与TextReader

    >读取字符到指定变量

    读取字符到指定变量
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace srReader
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string filePath = @"C:\StreamWriterDemo.txt";
                
    //通过使用FileStream打开一个文本流,可以进行更精细的文件打开控制。
                FileStream fs = File.Open(filePath, FileMode.OpenOrCreate);
                
    //从流中构造StreamReader类实例
                StreamReader sr = new StreamReader(fs,Encoding.Default);
                
    //
                while (!sr.EndOfStream)
                {
                    Console.WriteLine(sr.ReadLine());
                }
                sr.Close();
                StreamReader sr2 
    = new StreamReader(filePath,Encoding.Default);
                Console.WriteLine(
    "一次性读出所有的字符");
                Console.WriteLine(sr2.ReadToEnd());            
                Console.ReadLine();
            }
        }
    }


    编码实现>文件和输入输出>Stream流>二进制流写入类BinaryWriter

    BinaryWriter提供用二进制形式把基元类型写入流,可指定特定编码。常用例子,图片。

    二进制流写入类BinaryWriter
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    namespace BinaryWriterDemo
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string filePath=@"C:\BinaryWriter.dat";
                FileStream fs
    =new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.ReadWrite);
                
    //构造BinaryWriter
                BinaryWriter bw = new BinaryWriter(fs);
                
    //写入布尔值
                bw.Write(true);
                
    //写入字符串
                bw.Write("BinaryWriter");
                
    //写入整理值
                bw.Write(100);
                
    //调整流位直
                bw.Seek(0, SeekOrigin.End);
                
    //保存数据清空缓冲区
                bw.Flush();
                
    //关闭文件流。
                bw.Close();
             }
        }
    }


    编码实现>文件和输入输出>Stream流>二进制流读取类BinaryReader


    二进制流读取类BinaryReader
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;

    namespace BinaryReaderDemo
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    const string filePath = @"C:\BinaryWriter.dat";
                FileStream fs 
    = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                BinaryReader br 
    = new BinaryReader(fs);
                
    if (br.PeekChar() != -1)
                {
                    
    string str = br.ReadString();
                    
    bool bol = br.ReadBoolean();
                    
                    Console.WriteLine(str);
                    Console.WriteLine(bol.ToString());
                    
                }
            }
        }
    }



    合乎自然而生生不息。。。
  • 相关阅读:
    s-100与s-57电子海图的区别二 电子海开发一百篇第五十二篇
    s-100系列电子海图与s57电子海图的区别,电子海图开发一百篇第五十一篇
    S-100电子海图标准简述 电子海图开发一百篇第五十篇
    电子海图开发第四十九篇 船舶综合导航系统的设计(共一百篇)
    公有云成本节省神器!京东云共享带宽包正式上线
    1小时800箱,动力机器人真·搬砖16小时不续航;苹果官宣 WWDC 全球开发者大会召开时间;基于图神经网络的分级相关性匹配
    京东云智臻链开源两周年,JD Chain领跑国内自研区块链技术
    1800 美金?Apache ShardingSphere 带薪远程实习招募啦!| 2021 Google 编程之夏
    一体化智能安全防御 京东云星盾安全加速正式发布
    【技术面对面】单目多人3D人体网格恢复算法介绍
  • 原文地址:https://www.cnblogs.com/samwu/p/1853746.html
Copyright © 2011-2022 走看看