.net ——流的类型体系简单介绍

流的类型体系


基础流


装饰器流


包装器类


帮助类


继承自基本的stream流


在基础Stream上添加的功能


数据传输


对文件流的操作变简单

基础流


Stream


对应的后备存储是文件


内存


网络资源


FileStream


MemoryStream


NetWorkStream


IsolatedStorgaeFileStream:

继承自FileStream

感觉还是挺类Java的。

装饰器流


BufferdStream


DeflateStream


GZipStream


CryptoStream


AuthenticatedStream


System.io


System.IO.Compression


System.IO.Compression


System.Security.Cryptography


System.net.security


增强缓存


压缩


解压缩


加密解密


安全性

联想装饰者模式,估计是在基本流上面加上一些其他功能,有点儿像对基本类型的功能上的扩展。

包装器类

介绍流的用于数据传输;


TextWriter

TextReader(定义的一组通用的,读取和写入字符数据的方式)


StreamReader

StreamWriter:

1,继承自

TextWriter

TextReader,定义了一组通用的,读取和写入字符数据的方式

2,适用于读取和写入文本字符的场合


BinaryReader:用于向流中以二进制的方式写入基元类型

BinaryWriter:用于从流中读取基元类型


StringReader

StringWriter:

1,也继承自

TextWriter

TextReader,用于处理字符串

 #region StringReader,StringWriter的使用;

//                string text = @"姓名:水田如雅;
//                                年龄:20;
//                                性别:女";
//                StringReader reader = new StringReader(text);
//                int c = reader.Read();
//                Console.WriteLine((char)c);

//                char[] buffer = new char[7];
//                reader.Read(buffer, 0, buffer.Length);
//                Console.WriteLine(string.Join("", buffer));

//                string line = reader.ReadLine();
//                Console.Write(line);

//                string rest = reader.ReadToEnd();
//                Console.WriteLine(rest);

//                reader.Dispose();
//                Console.ReadKey();

            #endregion

            #region streamreader/StreamWriter的使用

                //FileStream fs = new FileStream("AboutVac.txt", FileMode.Open, FileAccess.Read);
                //StreamReader reader=new StreamReader(fs,Encoding.GetEncoding("GB2312"));

                //do
                //{
                //    Console.WriteLine(reader.ReadLine());

                //} while (reader.Read()>0);

                //StreamWriter writer = new StreamWriter("aboutMe.txt", false, Encoding.UTF8);
                //writer.Write("hello,word");

                //reader.Dispose();
                //writer.Dispose();

                //Console.ReadKey();

            #endregion

            #region BinaryReader/BinaryWriter的使用

                //Product product = new Product("Product.txt") { 

                //        id=110,
                //        price=123.3,
                //        Name="lhc"

                //};
                //product.Save();
                //Product newItem =new  Product("Product.txt");
                //newItem.Load();
                //Console.WriteLine(newItem);
                //Console.ReadKey();

            #endregion
public class Product {

        public int id { get; set; }
        public string Name { get; set; }
        public double price { get; set; }

        private string filePath;
        public Product(string filePath) { this.filePath = filePath; }

        public void Save() {

            FileStream fs = new FileStream(this.filePath, FileMode.Create, FileAccess.Write);
            BinaryWriter writer = new BinaryWriter(fs);
            writer.Write(this.id);
            writer.Write(this.Name);
            writer.Write(this.price);
            writer.Dispose();
        }

        public void Load() {

            FileStream fs = new FileStream(this.filePath, FileMode.Open, FileAccess.Read);
            BinaryReader reader = new BinaryReader(fs);
            this.id = reader.ReadInt32();
            this.Name = reader.ReadString();
            this.price = reader.ReadDouble();
            reader.Dispose();

        }

        public override string ToString()
        {
            return string.Format("ID:{0},Name:{1},Price:{2}", this.id, this.Name, this.price);

        }
    }

帮助类

命名空间:system.io


File


FileInfo


Path


Directory/DirecoryInfo


Create;

Open;

openRead;

openWrite;

Copy;


处理路径

  #region 工具类示例
               // File.WriteAllText("FileTest.txt", "hello,i‘m using file ", Encoding.UTF8);
  #endregion

在使用的时候,还是应该先考虑已有的高级类是否封装了可用的方法,没有的话,再考虑使用基本类进行封装。

时间: 2024-10-27 18:09:18

.net ——流的类型体系简单介绍的相关文章

C++map类型 之 简单介绍

一:map的前世今生 (1)从关联容器与顺序容器说起.关联容器通过键(key)存储和读取元素.而顺序容器则通过元素在容器中的位置顺序存储和訪问元素(vector,queue,stack,list等). 关联容器(Associative containers)支持通过键来高效地查找和读取元素. 两个主要的关联容器类型是 map 和 set. 当中map 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据.set 仅包括一个键.并有效地支持

JSF简单介绍

JSF简单介绍 一. 什么是 JSF: JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架.它提供了一种以组件为中心来开发 Java Web 用户界面的方法,从而简化了开发. JavaServer Faces于2004年三月1.0版正式提出,清楚的将Web应用程序的开发者划分了三个角色:网页设计人员.应用程序设计人员以及UI组件开发者. 从使用的角度来看,网页设计人员与应用程序设计人员能够他们所熟悉的方式开发程序,而不用侵入彼此的工作范围,而U

log4j的简单介绍

待完善: (1).这里有一篇介绍log4j较为详细的博文,粗略看了下,下次再深入看看,写一个较为深入的介绍,先把连接记录在这里: log4j详细介绍 关于log4j的日志一直弄的不清不楚.这里总结总结: (2)log4j有很多的bug,如死锁等.现在出现了logback和log4j2.下次再介绍. 1. Demo示例 在工程中经常看到类似这样的代码: private static final Log logger = LogFactory.getLog(XxxxClass.class); pri

Scheme语言--简单介绍

一年前事实上有时间看完SICP这本书,后来由于种种原因,一直没有继续再学.由于SICP中使用Scheme确实应用不多.在Java,C++的语言眼里,Scheme确实非常另类.现在MIT已经放弃了使用Scheme作为SICP的教学语言而转向python之际,我在此開始学习这本书与这门语言的学习.SICP主要使用Scheme语言来解决计算机科学中的一些问题.为了督促自己,每天都能学习.积小流而成江海,把自己的学习过程放在这里,以供自己复习. 本系列主要包含两部分Scheme语言层面的问题及SICP中

linux系统下软件安装包类型及安装介绍

linux系统下软件安装包类型及安装介绍 一.解析Linux应用软件安装包,通常Linux应用软件的安装包有四种: 1)tar包,如software-1.2.3-1.tar.gz.他是使用UNIX系统的打包工具tar打包的. 2)rpm包,如software-1.2.3-1.i386.rpm.他是Redhat Linux提供的一种包封装格式.包的管理工具YUM 3)dpkg包,如software-1.2.3-1.deb.他是Debain Linux提供的一种包封装格式.包的管理工具apt-get

Linux 内核开发—内核简单介绍

内核简单介绍 Linux 构成 Linux 为什么被划分为系统空间和内核空间 隔离核心程序和应用程序,实现对核心程序和数据的保护. 什么内核空间,用户空间 内核空间和用户空间是程序执行的两种不同的状态,Linux对自身软件系统进行了划分,一部分核心的软件独立于普通的软件,拥有特权级别,可以訪问平台的全部硬件和资源,称为"内核空间".而普通的软件执行在"用户空间",它仅仅拥有有限的系统资源,不能直接訪问内核空间和硬件资源. 将系统分为"内核空间"和

Protobuf的简单介绍、使用和分析

Protobuf的简单介绍.使用和分析   一.protobuf是什么? protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍.后面将会有简单的demo对于这两种格式的数据转化效率的对比.但这个库目前使用还不是太流行,据说谷歌内部很多产品都有使用. 二.protobuf有什么? Protobuf 提供了C++.java.

第一阶段:前端开发_JDBC简单介绍

2018-06-25 JDBC简单介绍 一.什么是JDBC   JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.  原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句. 二.JDBC原理 早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务, 因为各个厂商的数据库服务器差异太大了.后来SUN开始与数据库厂商们讨论

Python常用的库简单介绍一下

Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构建格式化的输出. difflib ,[Python]标准库,计算文本差异 . Levenshtein ,快速计算字符串相似度. Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. shortuuid ,一组简洁URL/UUID函数库. ftfy ,Uni