第11章 文件处理
自学考试公文写作与处理第十一章

(4)行政事务性的通知、便函、介绍信和请柬等;
(5)领导“亲收”、“亲启”件,这类信件应由收件人本人或其委托
人收阅后,认为须交机关存查或处理的,再行登记,并交有关部门处
理。
收文登记的形式和登记的项目要求,一般说来应根据机关的
大小和收来文件的多少等情况来确定。 内收发的收文登记主要项目应包括:收文顺序号、收到日期、
(4)在文件份数少,阅办阅知部门多的情况下,应按先办理、后阅知,
先主办、后协办,先正职、后副职的次序分送;(5)公文的分发要建 立登记交接制度,对那些要求退回归档的文件,要在文件上标明“阅
后请退回归档”字样。
传阅
公文的传阅是指单份或份数很少的文件以及一些非承办性文
件,需要经机关各位领导人和许多部门阅知时,由文书人员组织在他
2.批办是指机关领导人对送批的文件如何处理所作的批示。
公文批办的作用:在于使机关或部门的领导人及时阅读重要的收 文,掌握上级指示精神、工作发展情况和其他有关信息;并便于加强
对公文处理工作的领导,向承办人及时交代意图与要求,合理组织人
力,避免承办人在文书处理Байду номын сангаас走弯路,或由于分工不明,责任不清, 形成观望等待而拖延时间等。
文件阅毕后,阅看人员要在《文件传阅单》上签注姓名和日期。
三、拟办、批办与承办P302 1.拟办 公文的拟办是指对来文的处理提出初步意见,供领导人批办 时参考。 公文办理过程中做好拟办工作的重要性: 拟办是收文处理中的一个重要环节,机关领导,每天要阅批大量文件, 要对文件中涉及的许多问题表明态度。如果办公部门不管什么来文,一律 送领导批办,就必然增加领导负担,甚至造成领导包揽一切,发挥不了办 公部门的作用;如果向领导呈送文件之前,先提出拟办意见,即提出解决 问题的妥善方案,就等于起到“外脑”作用,助了领导同志“一臂之力”, 使他们能够节省耗费在阅批公文、应付事务上的时间,集中精力考虑大事。 因此,加强拟办工作,是提高工作效率和工作质量的有效措施。
第11章 Symbian手机上的文件操作

文件服务器
目录操作
读取目录列表 //获得指定目录下子目录和文件列表 TFileName fnPath; fnPath.Copy(_L("c:\\Data\\")); RFs& fs=CCoeEnv::Static()->FsSession(); CDir* pDir=NULL; TInt nn=fs.GetDir(fnPath,KEntryAttNormal|KEntryAttMat chMask, ESortByDate,pDir); for(int i=0;i<pDir->Count();i++) { RDebug::Print(_L("%S\n"),&((*pDir)[i].iName)); } delete pDir;
文件类RFile
创建、打开、关闭文件
创建文件 TFileName fnDataFile; fnDataFile.Copy(_L("c:\\Data\\FileExam.dat")); RFs& fs=CCoeEnv::Static()->FsSession(); RFile file; User::LeaveIfError(file.Create(fs,fnDataFile,EFileWrite) ); ... ... //使用file对象处理已经打开的文件 //或者使用下面的方式创建文件 User::LeaveIfError(file.Replace(fs,fnDataFile,EFileWrit e)); ... ... //使用file对象处理已经打开的文件
文件服务器
文件操作
删除文件 //删除文件 TFileName fnNew; fnNew.Copy(_L("c:\\Data\\Others\\dir2\\3.txt") ); RFs& fs=CCoeEnv::Static()->FsSession(); fs.Delete(fnNew);
11-异常处理(jb)

第11章异常处理 (1)11.1 C++的异常处理机制 (1)11.2 异常处理的实现 (2)第7章第11章异常处理异常处理(exception handling)机制是用于管理程序运行期间出现非正常情况的一种结构化方法。
C++的异常处理将异常的检测与异常处理分离,增加了程序的可读性。
异常处理常用于大型软件的开发中。
本章介绍异常处理的基本概念,以及异常处理程序的构造。
11.1 C++的异常处理机制软件开发不但要保证逻辑上的正确性,还必须具有容错能力。
即要求应用程序不但在正常情况下能够正确运行,发生意外时也可以做出适当处理,不会导致丢失数据或破坏系统运行等灾难性的后果。
这些意外可能由用户误操作、外部设备或文件的不正确连接,或者内存空间不足等原因所造成。
异常包括错误,也可能是某些很少出现的特殊事件。
为了处理可以预料的异常,传统的程序设计中,经常使用中断指令。
例如:abortassertexitreturn典型的方法是被调用函数运行发生错误时,返回一个特定的值,让调用函数检测到错误标志后做出处理。
或者当错误发生时,释放所有资源,结束程序执行。
这些处理方法使得异常处理代码分布在系统可能出错的各个地方。
优点是处理直接,运行开销小,适用于处理简单的局部错误。
缺点是错误处理代码掺杂于系统功能实现的代码主线,降低了程序的可读性和可维护性,不适用于组件式的大型软件开发。
如果设计的类是提供给其他程序员重用,使用传统的异常处理方式,虽然可以检测到异常条件的存在,但无法确定其他程序员如何处理这些异常;另一方面,这些程序员想按照自己的意愿处理异常,但又无法检测到异常条件是否存在。
异常处理的基本思想是将异常检测与处理分离。
出现异常的函数不需具备处理异常的能力。
当一个函数发生异常时,它抛出一个异常信息,希望它的调用者捕获并处理这个异常。
如果调用者不能处理,还可以报告(抛出)给上一级调用者处理。
一直到运行系统,若仍不能处理,将简单终止程序。
电路设计与制版——Protel 2004第11章

图11-2 设计规则校验器设置对话框
11.2
DRC设计校验
(2)在该对话框中左侧列表栏中选中 【Report Options】(报告文件)选 项,然后在右侧面板上选中以下3项: 【Create Report File】(生成设计规 则校验报表文件)、【Create Violations】(生成违反设计规则绿色 标记)和【Sub-net Details】(列出 违反设计规则的子网络),并设置当 设计规则的冲突数目超过“500”时, 系统将自动中止停止校验。 (3)在该对话框中左侧列表栏中选中 【Electrical】(电气规则),然后在 右侧面板上选中以下3个选项的 “Batch”项:【Clearance】、 【Short-Circuit】和【Un-Routed Net】,如图11-3所示 。
图11-3
设置电气校验规则
11.2
DRC设计校验
(4)在该对话框中左侧列表栏中选中【Routing】(布线规则),然后在 右侧面板上选中【Width】选项的“Batch”项,如图11-4所示。
图11-4 设置布线校验规则
11.2
DRC设计校验
Setup3:完成上述设计校验项目的设置后,单击 按钮,系 统将执行DRC设计规则校验,生成设计规则校验报表文件。系统将自动切 换到报表文件窗口,如图11-5所示 。
图11-7 PCB文件
11.3 通过DRC设计校验报告修改电路板
Setup2:执行菜单命令【Tools】/【Design Rule Check】,系统执行 DRC设计规则校验操作并生成规则校验表文件,该文件如下所示。系统自 动弹出【Message】面板,如图11-8所示。
图11-8 消息面板中的错误信息
11.1 设置DRC设计校验选项
Photoshop_CS图像处理课程第11章

中文版Photoshop CS图像处理培训教程 中文版Photoshop CS图像处理培训教程
11.1 通道的应用
• 11.1.1 知识讲解 • 11.1.2 典型案例——制作云雾效果 典型案例——制作云雾效果
中文版Photoshop CS图像处理培训教程 中文版Photoshop CS图像处理培训教程
中文版Photoshop CS图像处理培训教程 中文版Photoshop CS图像处理培训教程
3.复制通道
• 如果需要直接对通道进行编辑,最好先复
制一个通道,再编辑该复制的通道,以免 编辑后不能还原。复制通道的操作方法与 复制图层类似,先选中需要复制的通道, 然后按住鼠标左键不放并拖动到下方的 “新建通道”按钮 上,当鼠标光标变成 新建通道” 形状时释放鼠标即可。
2.创建新Alpha通道 .创建新Alpha通道
• 新创建的通道称为Alpha通道,它常用于保存图像 新创建的通道称为Alpha通道,它常用于保存图像
选区的蒙版,而不是保存图像的颜色。创建通道 主要有以下两种方法: – 单击通道面板底部的“新建通道”按钮 ,即 单击通道面板底部的“新建通道” 可新建一个Alpha通道,新建的Alpha通道在图 可新建一个Alpha通道,新建的Alpha通道在图 像窗口中显示为黑色。 – 单击通道面板右上角的 按钮,在弹出的下拉 菜单中选择“新通道” 菜单中选择“新通道”命令。在打开的 “新通 道”对话框中设置新通道的名称、色彩的显示 方式和颜色后单击 按钮,即可新建一 个Alpha通道。 Alpha通道。
1)颜色通道的类型
– Lab模式图像的颜色通道:Lab模式图像的颜色通道 Lab模式图像的颜色通道:Lab模式图像的颜色通道 有3个,包括明度通道、a(由红色到绿色的光谱变 个,包括明度通道、a 化)通道和b 化)通道和b(由蓝色到黄色的光谱变化)通道。 – 灰度模式图像的颜色通道:灰度模式图像的颜色通道 只有一个,用来保存图像的灰度信息,用8位或16位 只有一个,用来保存图像的灰度信息,用8位或16位 来表示。 – 位图模式图像的颜色通道:位图模式图像的颜色通道 只有一个,用来表示图像的黑白两种颜色。 – 索引颜色模式图像的颜色通道:索引颜色模式图像的 颜色通道只有一个,用来保存调色板中的位置信息, 具体的颜色由调色板中该位置所对应的颜色来决定。
第11章:场地、链接文件和共享坐标

第11章场地、链接文件和共享坐标概述:通过本章节的学习,我们将了解场地的相关设置与地形表面、场地构件的创建与编辑的基本方法和相关应用技巧。
随后我们将了解到如何应用和管理链接文件,最后是共享坐标的应用和管理。
11.1场地的设置单击“体量与场地”选项卡,“场地建模”面板下按钮,设置等高线间隔值、经过高程、添加自定义等高线、剖面填充样式、基础土层高程、角度显示等项目全局场地设置。
(如图11.1-1所示)。
图11.1-111.2地形表面的创建11.2.1拾取点创建打开“场地”平面视图,选项栏“体量与场地”“场地建模”面板下,“地形表面”命令,进入绘制模式。
单击“工具”面板下“放置点”命令,选项栏设置高程值,单击鼠标放置点,连续放置生成等高线。
修改高程值,放置其它点。
点“表面属性”命令设置材质,单击“完成表面”(如图11.2-1所示)。
图11.2-111.2.2导入地形表面打开“场地”平面视图,单击“插入”选项卡,“导入”面板下“导入CAD”命令,导入三维等高线数据。
单击“体量与场地”选项卡,“场地建模”面板下“地形表面”命令,进入绘制模式。
用“使用导入的”命令,选择已导入的三维等高线数据。
系统会自动生成选择绘图区域中已导入的三维等高线数据。
此时出现“从所选图层添加点”对话框,选择要将高程点应用于到的图层,并单击“确定”。
Revit Architecture 会分析已导入的三维等高线数据,并根据沿等高线放置的高程点来生成一个地形表面。
单击“地形属性”设置材质,完成表面。
11.2.3地形表面子面域单击“体量与场地”选项卡“修改场地”面板下“子面域”命令,进入绘制模式。
用“线”绘制工具,绘制子面域边界轮廓线。
点“子面域属性”设置子面域材质,完成绘制。
11.3 地形的编辑11.3.1拆分表面打开“场地”平面视图或三维视图,“体量与场地”选项卡“修改场地”面板下“子拆分表面”命令,选择要拆分的地形表面进入绘制模式。
数据结构--第11章 文件

• 更新某个记录必须对整个文件进行"复制"。
• 每个记录面有一个读/写磁 头,所有读写头安装在一 个活动臂装置上,可以一 起作径向移动。当磁道在 读/写头下通过时,便可以 进行信息的读/写。
• 各记录盘面上直径相同 的磁道组成一个“柱面”
• 一个磁道又可分为若干 弧段,称为“扇面”。 • 磁盘信息存取的单位为 一个扇面的字符组,称 为一个“页块” • 因此需用一个三维地址 来表明磁盘信息:柱面 号、记录面号和页块号。
二、B树的操作
• (1)按关键码进行查找 假设要查找关键码等于 kval 的记录
• 首先将根结点读入内存进行查找,若找到,即找 到了该记录所对应的物理记录位置,算法结束;
• 否则沿着指针所指,读入相应子树根结点继续进 行查找,直至找到关键码等于kval的索引项或者 顺指针找到某个叶子结点
• 前者可由索引项取得主文件中的记录,后者说明 索引文件中不存在关键码等于 kval 的记录。
二、磁盘存储器
• 磁盘是一种直接存取的存 储设备,既能顺序存取, 又能随机存取。目前使用 多为活动头磁盘。
• 由若干盘片组成一个盘片 组,固定在一个主轴上, 随着主轴顺一个方向高速 旋转。
• 除最顶上和最底下的两个 外侧盘面外,其余用于存 储数据的盘面称为“记录 盘面”,简称“记录面” • 记录面上存储数据的同心 圆称为“磁道”。
• 静态索引以ISAM文件为代表,它是一种专为磁 盘存取设计的文件组织方式,由索引区,数据区 和溢出区三部分组成。 • 索引区通常是与硬件层次一致的三级索引:总索 引,柱面索引和磁道索引,溢出区用来存放后插 入的记录。
c11 文件

二进制文件读写
fread函数
第 11 章 文 件
{"Sun",20050104,73.5},{"Li",20050106,87}}; FILE *fp;存区域中。 int i; if((fp=fopen("t.dat","wb"))==NULL) { printf("file creat error!\n"); 一般调用格式是:fwrite(buffer,size,count,fp); exit(0); } buffer是要输出数据在内存中存放的首地址;size是每次输出到文 for(i=0;i<N;i++) 件中的字节数;count是要输出的次数;fp是文件指针。它的功能是 fwrite(&s[i],sizeof(struct student),1,fp); 将从buffer为首地址的内存中取出count次数据块,每次size个字 fclose(fp); if((fp=fopen("t.dat","rb"))==NULL) 节,写入fp所指的磁盘文件中,如果函数调用成功,则返回实际写 { printf("file open error!\n"); 入的数据块个数。 exit(0); } for(i=0;i<N;i++) { fread(&a[i],sizeof(struct student),1,fp); printf("\n%s,%ld,%f",a[i].name,a[i].num,a[i].score); } fclose(fp); }
第 11 章 文 件
}
Copyright@ Henan Polytechnic University
第11章 预处理命令

程序员也可以把自己定义的符号常 量、宏,或函数原型放在头文件中, 用#include命令包含这些头文件。 (1)文件print_format.h #define PR printf #define NL "\n" #define D "%d " #define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S "%s"
3、如果“文件1”包含“文件2”,而“文件2” 又包含“文件3”,则可在 “文件1” 中使用 两个 include 命 令。
文件file1.c #include“file3.h” file3.h 应出现在 file2.h 之前 #include“file2.h”
4、文件包含可以嵌套。即一个被包含文件中 又可以包含另一个文件。
[例] 输出格式定义为宏 #define PR printf #define NL "\n"
main()
{ int a,b,c,d; char string[] = "CHINA"; a = 1; b = 2; c = 3; d = 4; PR(D1,a); PR(D2,a,b); PR(D3,a,b,c); PR(D4,a,b,c,d); PR(S,string); }
[例] 返回多个值的宏定义。 #define PI 3.1415926 #define CIRCLE(R,L,S,V) L=2*PI*R; S=PI*R*R;V=4/3*PI*R*R*R main() { float r,l,s,v; /*半径、圆周长、圆面积、球体 积 */ scanf("%f",&r); CIRCLE(r,l,s,v); printf("r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n" ,r,l,s,v); }
C语言 第14讲 (文件)

第11章 文件类型
(5)″rb″、″wb″、″ab″、″rb+″、″wb+″、″ab+″是使用 二进制文件相应的六种方式。 打开文件可得到三个信息: ① 要访问的文件名。 ② 使用文件的方式。 ③ 哪一个指针变量用于指向被打开的文件。 打开成功, 返回文件指针(文件信息区的起始地 址); 不能打开, 返回空指针。
第11章 文件类型
11.2.2 文件的关闭
文件在使用完后,应及时关闭。文件的关闭用 fclose( )函数完成,调用方式为: fclose(文件指针变量); 关闭文件将使文件指针变量与文件名脱钩,即指针 变量不再指向该文件。文件关闭后不能再用该指针变量
这时从文件中读数据到内存,故要求文件已经存在。
用″r″方式打开的文件只能读,不能同时写。
(2) ″w″方式, 以只写方式打开文本文件。
这时将内存中的数据写入到磁盘文件中。若文件不
存在, 建立新文件;若文件存在,则刷新文件,重新建 立。用″w″方式打开的文件只能写,不能同时读。
第11章 文件类型
exit(0);
}
第11章 文件类型
说明: (1) 不是所有编译系统均提供以上 12 种文件使用方式。 (2) 用″r″、″rb″方式打开的文件必须已经存在。 (3) 用″w″、″wb″方式打开的文件,可以存在也可以不存 在。不存在时,则新建文件;存在时,重新建立, 原文件内 容不被保留。
第11章 文件类型
第11章 文件类型
11.1 文件类型与文件指针
11.2 文件的打开与关闭
11.3 文件的读写与建立
11.4 程序设计举例
第11章 文件类型
11.1 文件类型与文件指针
第11章单文档与多文档

中(而不是从存储介质 这一点与Windows消息
中)将文档中的数据取 和控件通知消息不同,
出来,然后在屏幕上 因为Windows消息和控
显示文档的数据
件通知消息就只4能被 窗口和视图处理。
文档/视图结构的工作机制
视图通过GetDocument 成员函数获得指向相关 联的文档对象的指针
通过该指针调用文 档类的成员函数来 从文档中读取数据
无论是保存文档或是打开文档,应用程序都是通过 调用文档类的Serialize串行化成员函数来完成操作的。 因此,在大多数情况下,我们都需要重载Serialize成员 函数。Serialize成员函数带有一个CArchive类型的参数, 这是一个与所打开的文件相关联的对象。一般情况下, 总是使用CArchive对象来保存和打开文档。
由于每一个文档可以有多个视图,但 每个视图只能对应于一个确定的文档
多文档程序需要解决的问题仅仅是多 个文档的数据管理方法的问题
多文档程序,最初的文档模板只支持主窗口,但每次打开一 个新文档时都调用CDocument的函数OnNewDocument,建 立一个由CMDIChildWnd派生的新的MDI子窗口,这些窗口 中保存着各种已打开的文档,所有的细节都由MFC库处理 3
建的。
每一种文档类型都有一种文档模板与之相对应,文档模
板负责创建和管理该文档类型的所有文档。
文档模板的构造函数的原型如下:
CDocTemplate
(UINT nIDResource, //与文档一同使用的各种资源的资源标识符 CRuntimeClass* pDocClass,// 指向文档派生文档类的对象的指针 CRuntimeClass* pFrameClass, //框架类的派生框架类的对象指针 CRuntimeClass* pViewClass //指向CView的派生视图类的对象指针
C#文件流

文件操作4-1
• File类提供了文件操作的方法,并协助创建 FileStream对象
– 和Directory类一样,File类的方法是静态的, 无须创建对象即可使用
• 常用方法如下
– AppendAllText
• 将指定的字符串追加到文件中,如果文件不存在则 创建该文件
– Copy
• 复制文件
C#程序设计教程
第11章 文件操作
本章重点
• • • • • • • 文件和System.IO模型概述 System.IO模型 文件夹和文件操作 FileStream类 文本文件的操作 二进制文件操作 序列化和反序列化
2
文件类型3-1
• 按文件的存取方式及结构,文件可以分为 顺序文件和随机文件
– 顺序存取文件简称顺序文件,由若干文本行组 成,常称为ASCII文件
– GetCreationTime
• 返回创建目录的日期和时间
– GetCurrentDirectory
• 返回应用程序的当前工作目录
– GetDirectories
• 返回指定目录中所有子目录的名称
– GetFiles
• 返回指定目录中所有文件的名称
– GetFileSystemEntries
• 返回指定目录中所有子目录和文件的名称
9
C#的文件流
• C#将文件看成是顺序的字节流,也称为文 件流
– 文件流是字节序列的抽象概念,文件可以看成 是存储在磁盘上的一系列二进制字节信息 – C#用文件流对文件进行输入、输出操作 – C#提供Stream类(System.IO成员)是所有流 的基类,由它派生出文件流FileStream和缓冲 区流BufferedStream
目前最完整的数据结构1800题包括完整答案 第十一章 文件

第十一章文件一、选择题1. 散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址,因为散列函数是一对一的关系,则选择好的()方法是散列文件的关键。
【哈尔滨工业大学 2001二、5 (2分)】A. 散列函数B. 除余法中的质数C. 冲突处理D. 散列函数和冲突处理2. 顺序文件采用顺序结构实现文件的存储,对大型的顺序文件的少量修改,要求重新复制整个文件,代价很高,采用()的方法可降低所需的代价。
【北京邮电大学 2000 二、8 (20/8分)】A. 附加文件B. 按关键字大小排序C. 按记录输入先后排序D. 连续排序3. 用ISAM组织文件适合于()。
【中科院软件所 1998】A.磁带 B.磁盘4.下述文件中适合于磁带存储的是()。
【中科院计算所 2000 一、7(2分)】A. 顺序文件B. 索引文件C. 散列文件D. 多关键字文件5. 用ISAM和VSAM组织文件属于()。
A. 顺序文件B. 索引文件C. 散列文件【中国科技大学 1998 二、5(2分)中科院计算所 1998 二、5(2分)】6. ISAM文件和VASM文件属于()。
【山东大学 2001 二、5 (1分)】A. 索引非顺序文件B. 索引顺序文件C. 顺序文件D. 散列文件7. B+树应用在()文件系统中。
【北京邮电大学 2001 一、1(2分)】A. ISAMB. VSAM二、判断题1. 文件是记录的集合,每个记录由一个或多个数据项组成,因而一个文件可看作由多个记录组成的数据结构。
【长沙铁道学院 1998 一、5 (1分)】2. 倒排文件是对次关键字建立索引。
【南京航空航天大学 1997 一、10(1分)】3. 倒排序文件的优点是维护简单。
【南京航空航天大学 1995 五、10(1分)】4. 倒排文件与多重表文件的次关键字索引结构是不同的。
【西安交通大学 1996 二、6 (3分)】5. Hash表与Hash文件的唯一区别是Hash文件引入了‘桶’的概念。
《数据结构(C版)(第二版)》第11章.

本章学习内容 11.1 文件的基本概念 11.2 顺序文件 11.3 索引文件 11.4 ISAM文件和VSAM文件
11.5 散列文件
11.6 多关键字文件
2018年9月24日
1
11.1 文件的基本概念
文件是由大量性质相同的记录所构成的集合。 文件有不同的分类方式: 按记录类型分:操作系统文件和数据库文件。 按记录是否定长分:定长记录文件和不定长记录文件。 按查找关键字多少分:单关键文件和多关键文件。 记录有逻辑结构和存储结构之分。记录的逻辑结构,是指记录在用户或应用程 序员面前呈现的方式,是用户对数据的表示和存取方式。记录的存储结构是指 数据在物理存储器中的存储形式,是数据的物理表示和组织。
2018年9月24日
2
文件和数据元素一样,也有逻辑结构和存储结构。文件的逻辑结构可以表现为 记录的逻辑结构。文件的存储结构是指文件在物理存储器(磁盘或磁带)中的 组织方式。文件可以有各种各样的组织方式,其基本方式有三种:顺序组织、 随机组织和链组织。 对文件所施加的运算(操作)有两类:查找(检索)和更新(修改)。 文件的查找(检索)有三种方式:顺序查找、按记录号直接随机查找、按关键 字直接随机查找。
磁道索引 r47 384 3 4150 溢出区
图11-2 ISAM文件结构
2018年9月24日
10
从图11-2可以看到,每个柱面上还开辟有一个溢出区,这是为插入记录所设 置的。由于ISAM文件中记录是按关键字顺序存放的,则在插入记录时需移动 记录并将同一磁道上最末一个记录移到溢出区,同时修改磁道索引项。通常 在文件中可集中设置一个溢出区,或在每个柱面分别设置一个溢出区,或在 柱面溢出区满后再使用公共溢出区。引 330
磁道索引 50 164
答案 第十一章 文件

第十一章文件二1.操作系统文件数据库 2.单关键字文件多关键字文件3.(1)数据库(2)文本(3)顺序组织(4)随机组织(5)链组织(6)随机组织(7)m (8)⎡m/2⎤(9)2 (10) k 4.记录数据项 5.串联文件 6.第I-1 7.随机8.提高查找速度 9.树 10.检索记录快11.(1)关键字(2)记录号(3)记录号(4)顺序(5)直接12.构造散列函数解决冲突的方法 13.索引集顺序集数据集14.分配和释放存储空间重组对插入的记录四.应用题1.文件是由大量性质相同的记录组成的集合,按记录类型不同可分为操作系统文件和数据库文件。
2.文件的基本组织方式有顺序组织、索引组织、散列组织和链组织。
文件的存储结构可以采用将基本组织结合的方法,常用的结构有顺序结构、索引结构、散列结构。
(1)顺序结构,相应文件为顺序文件,其记录按存入文件的先后次序顺序存放。
顺序文件本质上就是顺序表。
若逻辑上相邻的两个记录在存储位置上相邻,则为连续文件;若记录之间以指针相链接,则称为串联文件。
顺序文件只能顺序存取,要更新某个记录,必须复制整个文件。
顺序文件连续存取的速度快,主要适用于顺序存取,批量修改的情况。
(2)带索引的结构,相应文件为索引文件。
索引文件包括索引表和数据表,索引表中的索引项包括数据表中数据的关键字和相应地址,索引表有序,其物理顺序体现了文件的逻辑次序,实现了文件的线性结构。
索引文件只能是磁盘文件,既能顺序存取,又能隋机存取。
(3)散列结构,也称计算寻址结构,相应文件称为散列文件,其记录是根据关键字值经散列函数计算确定其地址,存取速度快,不需索引,节省存储空间。
不能顺序存取,只能随机存取。
其它文件均由以上文件派生而得。
文件采用何种存储结构应综合考虑各种因素,如:存储介质类型、记录的类型、大小和关键字的数目以及对文件作何种操作。
3.在主文件外,再建立索引表指示关键字及其物理记录的地址间一一对应关系。
第11章 文件

第十一章 文件一、 C 文件概述1、文件:文件指存储在外部介质(如磁盘磁带)上数据的集合。
2、文件的分类按数据的组织形式:ASCII 文件(文本文件):每一个字节放一个ASCII 代码二进制文件:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
例:整数10000在内存中的存储形式以及分别按ASCII 码形式和二进制形式输出如下图所示:ASCII 文件和二进制文件的比较:ASCII 文件便于对字符进行逐个处理,也便于输出字符。
但一般占存储空间较多,而且要花费转换时间。
二进制文件可以节省外存空间和转换时间,但一个字节并不对应一个字符,不能直接输出字符形式。
一般中间结果数据需要暂时保存在外存上,以后又需要输入内存的,常用二进制文件保存。
3、 C 语言对文件的处理方法:缓冲文件系统:系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区。
用缓冲文件系统进行的输入输出又称为高级磁盘输入输出。
非缓冲文件系统:系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。
用非缓冲文件系统进行的输入输出又称为低级输入输出系统。
二、文件的打开与关闭1、文件的打开(fopen函数)函数调用:FILE *fp;fp=fopen(文件名,使用文件方式);①需要打开的文件名,也就是准备访问的文件的名字;②使用文件的方式(“读”还是“写”等);③让哪一个指针变量指向被打开的文件。
④打开文件的方式:r:以只读方式打开一个已存在的文本文件,w:以只写的方式打开一个文本文件,若文件存在则删除之,然后重新建立,a:以在文件末尾追加的方式打开一个文本文件,(属于只写方式)rb: 以只读方式打开一个已存在的二进制文件wb: 以只写的方式打开一个二进制文件,若文件存在则删除之,然后重新建立ab: 以在文件末尾追加的方式打开一个二进制文件,(属于只写方式)r+:以读写方式打开一个已存在的文本文件(可读可写)w+:以读写方式打开一个文本文件(可读可写),若文件存在则删除之,然后重新建立a+:以在文件末尾追加的方式打开一个文本文件,(可读可写)rb+:以读写方式打开一个已存在的二进制文件(可读可写)wb+:以读写方式打开一个二进制文件(可读可写),若文件存在则删除之,然后重新建立ab+:以在文件末尾追加的方式打开一个二进制文件,(可读可写)2、文件的关闭(fclose函数)fclose( 文件指针);返回值:关闭成功返回值为0;否则返回EOF(-1) 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件不存在,则打开失败
文件存在,打开失败 打开文件进行写操作 删除文件后重新新建文件 文件以二进制形式打开
• 需要注意的是当利用此open()函数打开的文件不存在时,应用程序会新 建一个文件,然后再进行打开。当需要以一种以上的方式打开文件时,
11.1.4 二进制文件的输 入和输出
• 任何文件都可以以二进制形式打开,文本文件是字符流,而二进制文件
是字节流。 • 在默认情况下,文件的打开方式是以文本文件的形式。如果需要指定以
二进制文件打开文件,只需要在open()函数时指定方式为ios::binary方式。
• 对二进制文件的读写有两种方式,一种是使用get()和put()函数,另一种 是使用read()和write()函数。这四个函数也可以用于文本文件的读写,其 使用方式与二进制文件的使用区别不大。
•
• •
这个函数的第一个参数是块数据的首字节地址,第二个参数是读入的字节数。
ostream& write( const char* pch, int nCount ); ostream& write( const unsigned char* puch, int nCount );
•
•
ostream& write( const signed char* psch, int nCount );
文件的输出
ifstream
istream
文件的输入
fstream
iostream
文件的输入或输出
• 在C++中,文件的打开一般需要进行下面几步:
• (1)建立流对象。C++提供了3个标准的输入输出流,可以利用这些流 类建立需要的对象。
• (2)使用流类的成员函数open()打开文件。其原型如下:
• void open( const char* szName, int nMode, int nProt = filebuf::openprot );
后才可以对文件进行操作,当操作结束时还需要关闭文件。下面对文件 打开和关闭的基本过程进行介绍。
1.文件的打开
• 在C++中文件的打开实际上就是将文件与一个流对象关联起来,C++提
供了3个标准的流类,3个流类列表如表11.1所示。
表11.1 C++的流类
名 称
基 类
作 用
ofstream
ostream
• abcde
• 本节介绍了在Visual C++中进行文件操作的基本函数和过程。在MFC中
对这些操作以C++类的形式进行了封装,使得文件的操作更加简单和方 便。在11.2节中将会看到使用MFC封装的文件类进行文件操作的基本方
法和过程。
11.2 CFile类
• 在MFC中利用C++类的形式封装了对各种各样的文件的操作。其中CFile
文件,文件的打开方式是一个需要注意的问题。Open函数中参数 nOpenFlags的常用取值为以下的一个或几个。
• CFile::modeCreate:打开文件时,如果文件不存在则新建一个文件。
• CFile::modeNoTruncate:普通方式打开文件。 • CFile::modeRead:只读方式打开文件。 • CFile::modeReadWrite:文件可读可写。 • CFile::modeWrite:只写方式打开文件。
11.1.3 文本文件的输入 和输出
• 在打开文件以后,就可以对文件进行输入操作,即写操作。使用运算符
“<<”,就可以将内容输入到文件。在C++中对屏幕的输出使用的是 cout<<,而此时使用的是与文件关联起来的流对象。对文件的读操作正
好与写操作相反,它使用的运算符为“>>”,其他的含义是完全相同的。
即nMode的取值有多个,需要用“|”连接起来,这样就可以以多种方式
打开文件。 • 注意:在Visual C++中使用C++的标准流类,需要包含头文件
iostream.h。
2.文件的关闭
• 在对文件的输入输出完成以后,需要关闭文件,即取消流对象和文件之
间的关联。文件的关闭需要使用close()函数。close()是流类的成员函数, 它的使用非常简单,没有参数,也没有返回值。
【示例11.1】
• 将1~10这10个整数输入到文件中。新建一个控制台应用程序,编写代
码如下:
• 程序运行后,屏幕上并不显示任何内容,因为输出的内容保存在文件中。
打开当前目录下的文件num,可以看到文件中的内容如下:
• 12345678910
• 上面的例子是先建立一个输出文件,然后写入数据,最后关闭文件。可 以看到文件中已保存了输出的内容。
virtual UINT Read( void* lpBuf, UINT nCount );
DWORD ReadHuge( void* lpBuffer, DWORD dwCount ); virtual void Write( const void* lpBuf, UINT nCount ); void WriteHuge( const void* lpBuf, DWORD dwCount ); virtual LONG Seek( LONG lOff, UINT nFrom ); void SeekToBegin(); DWORD SeekToEnd(); virtual DWORD GetLength() const; virtual void SetLength( DWORD dwNewLen ); virtual DWORD GetPosition() const; virtual CString GetFileName() const; static void PASCAL Rename( LPCTSTR lpszOldName, LPCTSTR lpszNewName ); static void PASCAL Remove( LPCTSTR lpszFileName );
1.get()和put()函数的使 用
• get()是输入流类istream的成员函数,它可以从流对象连接的文件中读出数
据,每次读取一个字节。put()是输出流类ostream的成员函数,它可以向流 对象连接的文件写入数据。 • • • • • get()和put()函数的原型如下:
istream& get( unsigned char& ruch );
11.2.2 使用CFile类
• 前面介绍了CFile类的基本成员,下面结合实例对CFile类的使用进行介
绍。Leabharlann 示例11.3】• 在对话框中利用CFile类实现保存在编辑框中输入的内容,单击“显示”
按钮后,在文件中保存该内容,并且在另一个对话框中输出文件的所有 内容。操作步骤如下:
• (1)新建一个基于对话框的应用程序。
• (2)在资源编辑环境中添加两个编辑框和一个按钮控件。
• (3)添加单击按钮控件的消息映射,编写函数体如下:
• 分析:上面代码首先将编辑框1里面的内容保存在文件的末尾,然后将 文件里面的所有内容读出来,显示在编辑框2里面。 • 提示:应预先建立test.txt文件。 • (4)编译、连接,运行结果如图11.1所示。
每次读入一个字节,并且放入rush中。 ostream& put( char ch );
将字符ch写入到文件中。
2.read()和write()函数的使用
• • • • read()和write()函数可以用来读写一个块数据,即可以读写结构体、数组等。其原型如下:
istream& read( char* pch, int nCount ); istream& read( unsigned char* puch, int nCount ); istream& read( signed char* psch, int nCount );
这个函数参数的意义和read()函数的参数的意义完全相同,只不过这个函数是将数据写入 文件。
【示例11.2】
• 将存放'a'到'e'的5个字符的数组写入文件。新建一个控制台应用程序,
编写代码如下:
• 分析:程序运行后,屏幕上并不显示任何内容,因为输出的内容保存在
文件中,打开当前目录下的文件num,可以看到文件中的内容如下:
数如表11.3所示。
表11.3 CFile的主要成员
函 数 CFile( LPCTSTR lpszFileName, UINT nOpenFlags ); 构造函数 说 明 virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = 打开文件 NULL ); virtual void Close(); 关闭文件
•
• •
COleStreamFile:封装了使用COMM Istream接口对复合文件的操作。
CSocketFile:封装了对Windows Socket提供的操作。 说明:CFile类是CObject的派生类,因此它支持串行化操作。在应用中可
以使用串行化操作保存文件。
• CFile类是文件类的基类,它封装了对磁盘文件进行的操作,其成员函
简单的事情。本节介绍C++中文件的输入输出操作的基本知识。
11.1.1 C++对文件操作 的支持
• C++把文件看做是字符序列,也就是说文件是由一个个字符数据顺序组成