第13章C的IO流类库
- 格式:ppt
- 大小:981.00 KB
- 文档页数:75
C#IO流详解分类:C# 2010-12-21 20:13 341人阅读评论(1) 收藏举报文件流和数据流不同的流可能有不同的存储介质,比如磁盘、内存等。
.NET类库中定义了一个抽象类Stream,表示对所有流的抽象,而每种具体的存储介质都可以通过Stream的派生类来实现自己的流操作。
FileStream是对文件流的具体实现。
通过它可以以字节方式对流进行读写,这种方式是面向结构的,控制能力较强,但使用起来稍显麻烦。
此外,System.IO命名空间中提供了不同的读写器来对流中的数据进行操作,这些类通常成对出现,一个用于读、另一个用于写。
例如,TextReader和TextWriter以文本方式(即ASCII方式)对流进行读写;而BinaryReader和BinaryWriter采用的则是二进制方式。
TextReader和TextWriter都是抽象类,它们各有两个派生类:StreamReader、StringReader以及StreamWriter、StringWriter。
17.3.1 抽象类StreamStream支持同步和异步的数据读写。
它和它的派生类共同组成了.NET Framework上IO操作的抽象视图,这使得开发人员不必去了解IO操作的细节,就能够以统一的方式处理不同介质上的流对象。
Stream类提供的公有属性见表17.4所示。
表17.4 Stream类的公有属性属性名类型含义CanRead bool 是否可以读取流中的数据CanWrite bool 是否可以修改流中的数据CanSeek bool 是否可以在流中进行定位CanTimeout bool 流是否支持超时机制Length long 流的长度Position long 流的当前位置ReadTimeout int 读超时限制WriteTimeout int 写超时限制其中前4个布尔类型的属性都是只读的。
也就是说,一旦建立了一个流对象之后,流的这些特性就不能被修改了。
实验十三I/O流类库1.实验目的1)熟悉流及流类库的作用。
2)掌握流类库常用的类及其成员函数的使用方法3)学习输入输出基本方法及其格式控制4)学习文本文件和二进制文件的输入输出方法2.实验要求:(1)设计一个留言类,实现如下功能:1)程序第一次运行时,建立一个文本文件c:\msg.ini,并把用户输入的信息存入该文件。
2)以后运行时,先读取文件的内容并显示给用户,然后由用户使入新的信息,退出时存入文档。
文件的内容,既可以是最新的,也可以包括以前的信息,请自己选择。
(2)定义一个类,重载输出运算符“<<”,用一定的格式将类的成员显示出来。
3.实验内容:3.1设计一个留言类(1)定义一个类Mailman,在构造函数中检查“c:\msg.ini”文件的存在,如果不存在则创建之,否则读取并显示内容给用户。
C++库函数:Open(“c:\msg.ini” ,ios::in);用法:fstream fs;fs.Open(“c:\msg.ini” ,ios::in);类:class MailMan{fstream fs;char Buf[1024];public:MailMan();virtual ~MailMan();void ReadMsgFromFile();void InMsg();void OutMsg();void SaveMsgToFile();};参考程序:Void MailMan::ReadMsgFromFile(){fs. o pen(“c:\msg.ini” ,ios::in);char temp;fs.unsetf(ios::skipws); //读入空格for(int i=0;i<1024;i++){if(fs>>temp) //读入一个字符,否则返回false{Buf[i]=temp;}Else{ Buf[i]=’\0’;Break;}}Fs.close();}(2)把用户输入的信息存放到程序中定义的缓冲区,请注意缓冲区的大小。
C语言文件操作和IO教程章节一:C语言文件操作基础C语言中的文件操作是程序与外部文件之间进行数据交流的重要方式。
在进行文件操作之前,我们需要包含头文件 "stdio.h",该头文件中包含了进行文件操作所需的函数和定义。
1.1 文件基本概念文件是存储在存储介质上的一组数据。
在C语言中,文件可以分为文本文件和二进制文件两种类型。
文本文件以可读的ASCII 字符形式存储数据,而二进制文件以字节流形式存储数据。
1.2 文件指针在C语言中,文件指针用于对文件进行操作。
它是一个指向FILE结构体的指针,每个打开的文件都有一个相关的文件指针。
我们可以通过使用标准库函数fopen来打开一个文件,并获取该文件的指针。
1.3 文件的打开和关闭操作文件的打开通过调用fopen函数来实现,其原型为:FILE *fopen(const char *filename, const char *mode);其中filename为文件名,mode为打开方式,如"r"代表只读,"w"代表写,"a"代表追加等。
文件打开成功后,函数返回一个指向该文件的指针;否则返回NULL。
文件的关闭操作使用fclose函数,其原型为:int fclose(FILE *stream);其中stream为要关闭的文件指针。
关闭文件后,相关的文件资源将被释放。
1.4 文件读写操作1.4.1 单个字符的读写为了从文件中读取或写入一个字符,我们可以使用fgetc和fputc函数。
fgetc函数原型为:int fgetc(FILE *stream);其中stream为要读取的文件指针。
该函数返回读取到的字符,若读取失败则返回EOF。
fputc函数原型为:int fputc(int character, FILE *stream);其中character为要写入的字符,stream为要写入的文件指针。
就像C语言一样,C++语言中也没有输入/输出语句。
但C++编译系统带有一个面向对象的输入/输出软件包,它就是I/O流类库。
流是I/O流类的中心概念。
首先介绍流的概念,然后介绍流类库的结构和使用。
对于流类库中类的详细说明及类成员的描述,请读者查阅所使用的编译系统的运行库参考手册。
一、I/O流的概念使用VC++6.0在程序中实现I/O有几种方法:C运行库直接非缓冲的I/OANSI C运行库流I/O控制台和端口直接I/OMicrosoft Foundation类库Microsoft I/O流类库其中I/O流类库对于缓冲的、格式化文本I/O是很有用的,它是C语言中I/O函数在面向对象的程序设计方法中的一个替换产品。
我们简单介绍过,在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。
从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作,数据的输入与输出就是通过I/O流来实现的。
这里,我们进一步介绍流的概念操作系统是将键盘、屏幕、打印机和通信端口作为扩充文件来处理的,而这种处理是通过操作系统的设备驱动程序来实现的。
因此,从C++程序员的角度来看,这些设备与磁盘文件是等同的。
I/O流类就是用来与这些扩充文件进行交互。
当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。
流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。
程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。
由于流对象是程序中的对象与文件对象进行交换的界面,对程序对象而言,文件对象有的特性,流对象也有,所以程序将流对象看作是文件对象的化身。
流所涉及的范围还远不止于此,凡是数据从一个地方传输到另一个地方的操作都是流的操作。
像网络数据交换、进程数据交换等都是流操作。
因此,一般意义下的读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。
IO流用法什么是IO流?IO流是Java编程语言提供的一种用于处理输入输出的机制。
IO是Input/Output 的缩写,表示输入和输出。
在Java中,IO流是一种用于读取和写入数据的方式。
IO流被分为输入流和输出流,输入流用于从外部设备(如文件、网络等)读取数据,输出流用于向外部设备写入数据。
IO流的分类Java中的IO流主要分为字节流和字符流两种。
字节流字节流以字节为单位进行读写操作,适用于处理二进制数据或字节流数据。
字节流分为输入字节流和输出字节流。
输入字节流输入字节流用于从外部设备读取数据。
常用的输入字节流有InputStream和FileInputStream。
•InputStream是所有输入字节流的抽象基类,提供了读取字节的基本方法,如read()、read(byte[] b)等。
•FileInputStream是从文件中读取字节的输入流,可以通过FileInputStream 读取文件中的字节数据。
输出字节流输出字节流用于向外部设备写入数据。
常用的输出字节流有OutputStream和FileOutputStream。
•OutputStream是所有输出字节流的抽象基类,提供了写入字节的基本方法,如write(int b)、write(byte[] b)等。
•FileOutputStream是向文件中写入字节的输出流,可以通过FileOutputStream向文件中写入字节数据。
字符流字符流以字符为单位进行读写操作,适用于处理文本数据。
字符流分为输入字符流和输出字符流。
输入字符流输入字符流用于从外部设备读取字符数据。
常用的输入字符流有Reader和FileReader。
•Reader是所有输入字符流的抽象基类,提供了读取字符的基本方法,如read()、read(char[] cbuf)等。
•FileReader是从文件中读取字符的输入流,可以通过FileReader读取文件中的字符数据。