当前位置:文档之家› 读写复合文档

读写复合文档

读写复合文档
读写复合文档

C++下读写复合文档

今天的工程要用到复合文档,查了一下MSDN,没有介绍如何使用。上网查了一下,相关的资料少之又少,而且还不完整,于是想起我的电脑中存有一份DELPHI的文档,里面有介绍过如何在DELPHI下读写复合文档。虽然是DELPHI写的,但都是用SDK,转为C++应该不难。(复合文档也叫做结构化文件)

读写复合文档主要用到其中的几个函数就可以了

1.先用StgCreateDocfile 函数创建一个复合文档

HRESULT StgCreateDocfile(

const WCHAR *pwcsName, // 指向复合文档路径的指针

DWORD grfMode, // 指定访问模式

DWORD reserved, // 保留参数,必须为0

IStorage **ppstgOpen // 返回一个新的IStorage指针

);

2.然后调用IStorage::CreateStorage 创建一个子IStorage

HRESULT CreateStorage(

const WCHAR *pwcsName, // 子IStorage的名称

DWORD grfMode, // 指定访问模式

DWORD reserved1, // 保留参数,必须为0

DWORD reserved2, // 保留参数,必须为0

IStorage **ppstg // 当函数执行成功后,返回一个新的IStorage指针,如果执行失败则返回NULL

);

3.再调用IStorage::CreateStream 创建一个子IStream

HRESULT CreateStream(

const WCHAR *pwcsName, // 子IStream的名称

DWORD grfMode, // 指定访问模式

DWORD reserved1, // 保留参数,必须为0

DWORD *reserved2, // 保留参数,必须为0

IStream *ppstm // 当函数执行成功时返回一个新的IStream接口指针,否则返回NULL

);

4.最后调用IStream::Write/IStream::Read 来写、读复合文档(实际上调用ISequentialStream::Write/ISequentialStream::Read)

HRESULT Write(

void const *pv, // 指向要写入的数据的缓冲区的首地址

ULONG cb, // 要写入的字节数

ULONG *pcbWritten // 实际写入的字节数

);

HRESULT Read(

void *pv, // 指向用于存放读入数据的缓冲区首地址

ULONG cb, // 要读入的字节数

ULONG *pcbRead // 实际读入的字节数

);

其中第三个参数(pcbWritten/pcbRead)可以指定为NULL,如果不知道要读入的数据大小,可以指定一个较大的数

更多资料可以查一下MSDN

CreateStorage用于创建一个子IStorage,相当于创建一个目录(复合文档类似于树形图,可以创建无限级目录)

下面代码用于写复合文档

view plaincopy to clipboardprint?

01.// TODO: Add your control notification handler code here

02.DWORD dwMode=STGM_WRITE|STGM_CREATE|STGM_SHARE_EXCLUSIVE; // 只写|如果文件存在则替换,不存在则创建|独占

03.IStorage *pStgRoot,*pStgSub;

04.IStream *pStream;

05.pStgRoot=NULL; // 设为NULL,可以知道函数是否执行成功

06.////////////////////////////////////////////////////////////////////////////////

07.// 创建复合文档

08.// 如果文件不存在则创建一个新文件,已经存在则替换原文件

09.// 创建完成后得到一个新的storage对象,可用于创建一个根目录

10.StgCreateDocfile(

11. FILENAME, // 复合文档路径

12. dwMode, // 请问模式

13. 0, // 必须为0

14. &pStgRoot // 返回一个新的storage对象

15. );

16.////////////////////////////////////////////////////////////////////////////////

17.// 创建一个根目录,并准备创建一个子目录

18.pStgRoot->CreateStorage(

19. L"StgRoot", // 子IStorage的名称

20. dwMode, // 请问模式

21. 0, // 必须为0

22. 0, // 必须为0

23. &pStgSub // 返回一个新的storage对象

24. );

25.////////////////////////////////////////////////////////////////////////////////

26.// 创建一个数据流(结点),并准备写入数据

27.pStgSub->CreateStream(

28. L"Stm", // 子IStream的名称

29. dwMode, // 请问模式

30. 0, // 必须为0

31. 0, // 必须为0

32. &pStream // 返回一个新的IStream接口指针

33. );

34.////////////////////////////////////////////////////////////////////////////////

35.// 写入数据

36.char strText[]={"Hello World!"};

37.ULONG actWrite;

38.int nLen=strlen(strText); // 字串长度

39.pStream->Write(

40. strText, // 要写入的数据

41. nLen, // 要写入数据的长度

42. &actWrite // 实际写入长度,也可以设为NULL

43. );

44.////////////////////////////////////////////////////////////////////////////////

45.// 释放资源

46.// 如果不调用Release()方法,会导致写入不完全、文档体积大、无法正常读取等问题

47.pStream->Release();

48.pStgSub->Release();

49.pStgRoot->Release();

50.////////////////////////////////////////////////////////////////////////////////

51.CString strMsg;

52.strMsg.Format("数据长度:%d ,实际写入长度:%ld",nLen,actWrite);

53.AfxMessageBox(strMsg);

// TODO: Add your control notification handler code here

DWORD dwMode=STGM_WRITE|STGM_CREATE|STGM_SHARE_EXCLUSIVE; // 只写|如果文件存在则替换,不存在则创建|独占

IStorage *pStgRoot,*pStgSub;

IStream *pStream;

pStgRoot=NULL; // 设为NULL,可以知道函数是否执行成功

////////////////////////////////////////////////////////////////////////////////

// 创建复合文档

// 如果文件不存在则创建一个新文件,已经存在则替换原文件

// 创建完成后得到一个新的storage对象,可用于创建一个根目录

StgCreateDocfile(

FILENAME, // 复合文档路径

dwMode, // 请问模式

0, // 必须为0

&pStgRoot // 返回一个新的storage对象

);

////////////////////////////////////////////////////////////////////////////////

// 创建一个根目录,并准备创建一个子目录

pStgRoot->CreateStorage(

L"StgRoot", // 子IStorage的名称

dwMode, // 请问模式

0, // 必须为0

0, // 必须为0

&pStgSub // 返回一个新的storage对象

);

////////////////////////////////////////////////////////////////////////////////

// 创建一个数据流(结点),并准备写入数据

pStgSub->CreateStream(

L"Stm", // 子IStream的名称

dwMode, // 请问模式

0, // 必须为0

0, // 必须为0

&pStream // 返回一个新的IStream接口指针

);

////////////////////////////////////////////////////////////////////////////////

// 写入数据

char strText[]={"Hello World!"};

ULONG actWrite;

int nLen=strlen(strText); // 字串长度

pStream->Write(

strText, // 要写入的数据

nLen, // 要写入数据的长度

&actWrite // 实际写入长度,也可以设为NULL

);

////////////////////////////////////////////////////////////////////////////////

// 释放资源

// 如果不调用Release()方法,会导致写入不完全、文档体积大、无法正常读取等问题pStream->Release();

pStgSub->Release();

pStgRoot->Release();

////////////////////////////////////////////////////////////////////////////////

CString strMsg;

strMsg.Format("数据长度:%d ,实际写入长度:%ld",nLen,actWrite);

AfxMessageBox(strMsg);

以上代码较简单,没有判断函数是否执行成功,大家可以用pStgRoot,pStgSub,pStream的值判断,也可以用函数返回值判断

还要在源文件上面添加一句

#define FILENAME L"C:\\myfile.stg"

再来读取我们的文档,也用到几个函数

HRESULT StgOpenStorage(

const WCHAR *pwcsName, // 文件路径

IStorage *pstgPriority, // 指向前一个打开的文件的storage对象

DWORD grfMode, // 访问模式

SNB snbExclude, // 指向一个SNB的结构体

DWORD reserved, // 保留参数,必须为0

IStorage **ppstgOpen // 返回IStorage 接口

);

HRESULT OpenStorage(

const WCHAR *pwcsName, // 指定子IStorage 接口的名称

IStorage *pstgPriority, // 一个已存在的IStorage对象指针,可设为NULL

DWORD grfMode, // 访问模式

SNB snbExclude, // SNB结构体,可设为NULL

DWORD reserved, // 保留参数,必须为0

IStorage **ppstg // 返回打开的子IStorage 接口

);

HRESULT OpenStream(

const WCHAR *pwcsName, // 指定子IStream 接口的名称

void *reserved1, // 保留参数,必须为NULL或0

DWORD grfMode, // 访问模式

DWORD reserved2, // 保留参数,必须为0

IStream **ppstm // 返回子IStream 接口

);

最后调用ISequentialStream::Read读出数据

view plaincopy to clipboardprint?

01.DWORD dwMode=STGM_READ|STGM_SHARE_EXCLUSIVE; // 只读|独占

02.IStorage *pStgRoot,*pStgSub;

03.IStream *pStream;

04.pStgRoot=NULL;

05.pStgSub=NULL;

06.pStream=NULL;

07.////////////////////////////////////////////////////////////////////////////////

08.// 打开文件

09.StgOpenStorage(

10. FILENAME,

11. NULL,

12. dwMode,

13. NULL,

14. 0,

15. &pStgRoot

16. );

17.////////////////////////////////////////////////////////////////////////////////

18.// 打开一个目录

19.pStgRoot->OpenStorage(

20. L"StgRoot", // 注意大小写

21. NULL,

22. dwMode,

23. NULL,

24. 0,

25. &pStgSub

26. );

27.////////////////////////////////////////////////////////////////////////////////

28.// 准备读取数据

29.pStgSub->OpenStream(

30. L"Stm",

31. NULL,

32. dwMode,

33. 0,

34. &pStream

35. );

36.////////////////////////////////////////////////////////////////////////////////

37.// 读取数据

38.const int nLen=255; // 准备读入的长度

39.char strText[nLen]={0}; // 必须指定初始值,否则会显示出乱码,也可以设为'\0'

40.ULONG actRead;

41.pStream->Read(

42. strText, // 存放放入的数据的缓冲区

43. nLen, // 要读入数据的长度,如不清楚可以设为较大的数

44. &actRead // 实际读入的长度

45. );

46.////////////////////////////////////////////////////////////////////////////////

47.// 释放资源

48.pStream->Release();

49.pStgSub->Release();

50.pStgRoot->Release();

51.////////////////////////////////////////////////////////////////////////////////

52.AfxMessageBox(strText);

53.CString strMsg;

54.strMsg.Format("指定读入数据的长度:%d ,实际读入数据长度:%ld",nLen,actRead);

55.AfxMessageBox(strMsg);

DWORD dwMode=STGM_READ|STGM_SHARE_EXCLUSIVE; // 只读|独占

IStorage *pStgRoot,*pStgSub;

IStream *pStream;

pStgRoot=NULL;

pStgSub=NULL;

pStream=NULL;

// 打开文件

StgOpenStorage(

FILENAME,

NULL,

dwMode,

NULL,

0,

&pStgRoot

);

////////////////////////////////////////////////////////////////////////////////

// 打开一个目录

pStgRoot->OpenStorage(

L"StgRoot", // 注意大小写

NULL,

dwMode,

NULL,

0,

&pStgSub

);

////////////////////////////////////////////////////////////////////////////////

// 准备读取数据

pStgSub->OpenStream(

L"Stm",

NULL,

dwMode,

0,

&pStream

);

////////////////////////////////////////////////////////////////////////////////

// 读取数据

const int nLen=255; // 准备读入的长度

char strText[nLen]={0}; // 必须指定初始值,否则会显示出乱码,也可以设为'\0' ULONG actRead;

pStream->Read(

strText, // 存放放入的数据的缓冲区

nLen, // 要读入数据的长度,如不清楚可以设为较大的数

&actRead // 实际读入的长度

);

////////////////////////////////////////////////////////////////////////////////

// 释放资源

pStream->Release();

pStgSub->Release();

pStgRoot->Release();

AfxMessageBox(strText);

CString strMsg;

strMsg.Format("指定读入数据的长度:%d ,实际读入数据长度:%ld",nLen,actRead);

AfxMessageBox(strMsg);

现在已经完成复合文档的读写了,也可以写入其它数据如结构体等,在此就不写出代码了,源码我已经打包上传了,有兴趣的朋友可以下载演示程序看看

本文来自CSDN博客,转载请标明出处:https://www.doczj.com/doc/9513551146.html,/bllqbz/archive/2010/07/20/5750893.aspx

https://www.doczj.com/doc/9513551146.html,/search/label/F astExcel

金格iWebOffice2006分离纯WORD文档

金格iWebOffice2006分离纯WORD文档 https://www.doczj.com/doc/9513551146.html,/esoftware/ 2007年09月04日17:39 来源:eNet 硅谷动力字号:小 | 大 【文章摘要】金格网络文档系列中间件产品,作为目前办公应用中使用最广泛的中间件产品以其强大的功能、良好的稳定性、丰富的开发接口、安全可靠的数据通信能力、专为办公量身定做的特色功能、能应对各种应用环境的等特点闻名于OA办公的应用领域。iWebOffice2006全文批注中间件在目前的OA应用中用到的比较广泛,其本身强大的功能赋予了集成开发人员极大的开发灵活性,针对不同用户的文档处理需求开发满足对应需求的功能已经完全不是问题了。 前言: 金格网络文档系列中间件产品,作为目前办公应用中使用最广泛的中间件产品以其强大的功能、 良好的稳定性、丰富的开发接口、安全可靠的数据通信能力、专为办公量身定做的特色功能、能应对 各种应用环境的等特点闻名于OA办公的应用领域。iWebOffice2006全文批注中间件在目前的OA应 用中用到的比较广泛,其本身强大的功能赋予了集成开发人员极大的开发灵活性,针对不同用户的文 档处理需求开发满足对应需求的功能已经完全不是问题了。 全文批注文档: 随着应用的深入,客户在应用中发现iWebOffice2006控件保存出来的文档不能被WORD打开,呈 现的问题是文档打开后都是乱码。“这下问题大了,因为客户很多文档是要以WORD格式存档保存 的”,开发人员经常跳起脚说。(笑) 其实,这并是不什么大问题。先介绍一下iWebOffice2006控件的文档机制吧。iWebOffice2006 产品是全文批注产品,它的作用是在文档流转过程中既可以支持WORD格式的文档编辑和痕迹的保留, 同时又可以支持把WORD格式的文档转换成一种图形的、支持手写设备输入的全文批注格式。这样就 要求它能够同时把两种格式的文档都保存起来,于是iWebOffice2006控件保存出来的文档就不是纯 粹的WORD文档了。准确的说,应该是“WORD文档+全文批注文档”的“复合文档”(如:图1)。 既然控件保存时是提供了一种“复合文档”的格式,那是否可以从中把WORD文档单独提取出来 呢?答案是肯定的,下面我们来介绍如何从保存好的“复合文档”中提取纯WORD文档。

使用文本文件 txt 进行数据存取的技巧总结 相当

使用文本文件txt 进行数据存取的技 巧总结相当 使用文本文件(.txt)进行数据存取的技巧总结 由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用"--转--"标注,原作者略去,在此对所有原作者表示感谢! 特别说明:由于大家在I/O存取上以txt文件为主,且读取比存储更麻烦(存储的话fwrite,fprintf基本够用),因此下面的讨论主要集中在"txt文件 的读取"上。除了标注了"转"之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。 一.基本知识: --转-- 1.二进制文件与文本文件的区别: 将文件看作是由一个一个字节(byte)组成的,那么文本文件中的每个字节 的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是 打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在 打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制 方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文 件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑 的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:

读写结合中期报告

石佛庄小学校本课题研究中期报告 时间: 立项号课题名称小学语文教学中有效渗透读写的课例研究 负责人金璐 负责人 所在单位 杨庄街道石佛庄小学 课题研究进展情况我们的实践 1、绘本起步,句子切入,读文赏图,先说后写,创作表达(低年级)。 绘本是小学生最喜闻乐见的阅读文本,语言浅显精炼。优秀绘本是低年级学生学习语言的范本,让学生有对象可模仿,是低年级写话训练优秀素材。绘本作文是绘本阅读的延伸,是习作教学富有趣味的补充。学生对绘本的喜爱更能激发学生表达的欲望,创作的热情,通过读文赏图,让学生先说后写,图文并茂,创作表达。 2、仿写起步,依托文本,设定目标,整体设计,分类指导(中高年级)。 主要尝试单元整体设计,读写目标为先的教学策略,结合小学生习作种类,按照写人、叙事、写景、状物、应用文分类进行读写指导,尝试读写结合教学课例。刘沙老师执教人教版第十册《16、桥》读写结合,学习本文环境描写、对比手法、细节描写、前后照应、设置悬念的写作方法。根据本文总结出《记事作文儿歌》,为本单元的习作《一件感人的故事》做好铺垫。 审清题目,选材典型,围绕中心,组织材料。 环境描写,烘托人物,前后照应,层层铺垫。 刻画人物,描写细节,运用对比,突出品质。 用词准确,语言简练,运用修辞,形象生动。 设置悬念,构思新颖,拟定题目,画龙点睛。 此外,《跨越海峡的生命桥》读写结合,渗透了感谢信的写法,所选例文,来自身边的第四军医大学,真人真事,学生懂得学语文,用语文。 模仿是儿童的天性。他们在学习语言和表达技能的过程中,常常借助于模仿。仿写的形式可分为三种:单项仿写、片段仿写和全文仿写。 1、单项仿写。从文章的结构看,可分为题目、开头、结尾、过渡段等; (1)题目仿写,即结合解题教学,模仿自拟标题。 在阅读教学中,指导学生理解题目,从题学文,了解作者如何从选材、立意到拟定文章标题的构思过程,与在写作中指导学生如何根据要表达的内容、主题到拟定作文标题这一过程是对应的。小学语文教材中的记叙文,从标题的思想内容和语言形式进行归类,结合解题教学,教给学生自拟标题的方法。(2)开头、仿写。 针对学生常常感到开头难的现状,教师可指导学生学习课文的开头方法。开头有三个特点: 一是“统帅全文”,即一开头就概括全文的要点。 二是“开门见山”即一开头就接触主题,使读者对文章的主要内容一目了然。

用WinHex修复损坏的复合文档文件头

用WinHex修复损坏的复合文档文件头 说明: 1、本教程仅仅针对复合文档(比如Word、Excel等)的文件头损坏后的修复. 2、请允许我假设你已经了解复合文档的结构,至少你能知道复合文档中的一些术语(比如:SAT、SSAT MSAT、标准流、短流等) 现象 打开这个文档时出现乱码(如图): 分析数据 用WinHex打开这个文档,如下图: 分析:这个文档的文件头损坏了,继续分析后面的内容损坏没有,现在把这个文档设置为磁盘(如图),复合文档在储存数据的最小单位是块(一个块是512个字节,相当于一个扇区的数据,所以有时我们也把它称为扇区),这样操作后看到的数据可以以一个扇区的形式呈现,便于分析和手工重建。 经过分析数据发现,这个文档好像只有第0扇区的数据完全破坏了,这个扇区的内容是复合文档的文件头内容,网上有恢复复合文档文件头的视频教程(这个论坛上就有!!),好像就是把一个正常的复合文档的前几行数据复制一下就行了,从理论上讲恢复的成功率极小,几乎是0。因为复合文档的结构和FAT文件系统极其相似,但比它还要复杂一些(涉及到短流、SSAT和MSAT),复合文档的文件头相当于FAT文件系统中的DBR,有很多参数是要根据文件的具体数据进行相应的修改。下图中红底黑字部分描述的就是一般要修改的内容(有7处,小的文档一般只改其中的5处),其它部分可以用一个正常的复合文档的相应数据代替。

说明:要修改的文件头内容: 1、存放扇区配置表(SAT)的扇区总数(2CH -2FH ) 2、存放目录流的第一个扇区的SID (30H -33H ) 3、存放短扇区配置表(SSAT)的第一个扇区的SID (3CH -3FH ) 4、存放短扇区配置表(SSAT)的扇区总数(40H -43H ) 5、存放主扇区配置表的第一个扇区的SID (如果为-2表示没有附加扇区)(44H -47H ) 6、存放主扇区配置表的扇区总数(48H -4BH ) 7、存放主扇区配置表(MSAT )的第一部分(从4CH 开始,视具体情况决定结束位置) 备注:如果文件比较小(存放主扇区配置表的第一部分在第0扇区没有装满),第5、6两部分不用修改!! 要修复文件头,一般从扇区配置表(SAT )的数据分析开始,SAT 相当于FAT 文件系统中的FAT 表,它把这个复合文档的各类数据“链”在一起,所以我们反过来通过分析它们的链接情况和相应位置的数据,来分析整个文档的数据结构,最后根据相关信息重建文件头,达到修复文件头的目的。 在分析前有必要作一个说明,不然你会越看越糊涂的!!我们现在看到的数据所在的扇区数据和复合文档中描述的扇区数有一个扇区的错位,比如说复合文档中描述的第0扇区在WinHex 中看到的是第1扇区,为了便于区分,把用WinHex 打开看到的扇区叫做物理扇区,文档的参数中描述的扇区叫参数扇区(这是我自己想的一个概念,请只在本教程中使用和理解!!)。我们可以这样理解:物理0扇区是这个复合文档的文件头,存放了复合文件的一些整体信息,它对后面的数据来说是一个隐藏扇区,所以对数据区来说,它把物理1扇区看成它的第一个扇区(即参数0扇区),物理2扇区就是参数1扇区,依此类推(如下图所示)。 物理扇区 0 1 2 3 4 5 6 …………N 参数扇区 0 1 2 3 4 5 …………N -1 通过分析开始几个扇区的数据很容易判断出物理1扇区的数据就是SAT (如图) 第1扇区(物理) 从这个扇区中的数据可以看到,在参数0扇区和参数100扇区这两个扇区中的数据是SAT 数据(因为相应的位置是FDFFFFFF ,而FDFFFFFF 是存放SAT 扇区标志),参数0扇区就是物理1扇区的位置,现在的这个位置就是SAT 数据,不必再分析,现在到参数100扇区,就是物理101扇区去看看(如图): 第101扇区(物理) 这个扇区中没有FDFFFFFF ,而且从偏移CA6BH 开始,后面全部是FFFFFFFF (空闲的SID ),综合这两个扇区(物理第1和第101

SuperMap数据存储方式,sdb,sdd,dwg等的含义

SuperMap Objects采用独特的多源空间数据无缝集成技术,提供了多种空间数据存储格式。不同的数据存储方式由不同的空间数据引擎负责维护。这些引擎包括:SDB,DGN,DWG,MDB 和SDX。这些引擎分别介绍如下: SDB引擎:是SuperMap Objects自有的一种基于文件和数据库方式混合的空间数 据组织方式。一个SDB数据工程包括两个文件,扩展名为SDB的文件存储空间数据,采用OLE 复合文档技术;扩展名为SDD的文件为属性数据库,采用Access 的MDB数据库格式。由于SDB文件采用了复合文档技术,因此提供了在一个SDB工程中存储多个数据集的能力。SDB引擎仅仅支持多用户共享读访问,但只支持单用户写操作。SDB主要面向中、小型系统和桌面应用; DGN引擎:也是一个基于文件的空间数据引擎,是SuperMap Objects中实现的第 一个访问其它软件数据格式的引擎。DGN引擎提供了直接访问MicroStation DGN数据文件的能力。DGN引擎是一个只读引擎,您可以使用DGN数据源中的数据,但不提供编辑功能。 DWG引擎:与DGN引擎类似,DWG引擎提供了直接访问AutoCAD的DWG数据 文件的能力。DWG引擎也是只读引擎。 MDB引擎:一种纯数据库引擎,采用Access的MDB数据库作为数据存储容器。基 于Microsoft的Jet数据引擎实现。MDB引擎把空间数据和非空间数据存储在同一个MDB 数据库中,真正实现了空间数据和非空间数据的无缝组织,同时便于维护数据。MDB支持多用户并发读写操作。一个MDB文件中可以存储多个数据集。与SDB一样,MDB引擎面向中小型桌面应用系统,一个MDB的最大空间容量为1G。MDB引擎适用于中小型应用。 SDX引擎:是基于大型数据库的纯关系数据库空间引擎。实现了空间数据和属性数 据的无缝组织,支持大数据量管理,支持多用户共享读写访问,支持短事务和长事务处理,有严格的权限管理。SDX引擎适合建立大型空间数据应用。SDX引擎针对不同的数据库系统又有细分,目前支持Microsoft SQL Server,Oracle,Oracle Spatial和SyBase。 SDX Plus引擎:是SuperMap公司的第三代数据库引擎,相对于SDX引擎来讲, 各方面性能更加优化。目前支持Microsoft SQL Server,Oracle。具体介绍请参考有关 SuperMap SDX(+)引擎的介绍和技术白皮书。 在以上的几种数据格式中,SDB应用最多,并且超图公司提供了SuperMap D-Builder来支持空间数据格式转换、地理参照系变换、空间数据入库等功能,先将这三方

二进制文件的读写以及相关心得

二进制文件读写分析 有关TXT文件以及bin文件处理的测试代码 int main() { //fstream file("D:\\test.dat",ios_base::in|ios_base::out|ios_base::app); fstream file; file.open("D:\\test1.dat",ios_base::out); { int temp[10] = {0x11,0x13,0x14,0x1F,0x1D,0x11,0x11,0x12,0x11,0x11}; int temp1[10]; file.write((char *)temp,sizeof(temp)); file.close(); file.open("D:\\test1.dat",ios_base::in); file.read((char *)temp,sizeof(temp)); unsigned int i; cout<

三年级阅读课堂教学中读写结合训练

小学三年级阅读课堂教学中读写结合训练 瑞安市实验小学吴向华我们三年级组研究的课题是《立足中段,从读学写》。大家都知道在小学阶段,中年级是承上启下的过渡阶段。把握好中年级作文教学的目标尺度,应是提高中年级作文教学实效的重要保障。为了加强这个阶段性,有必要将抓住段落特点、读写结合作为三年级作文教学的重点。平时我们教研组的老师是这样做的:1、查阅相关资料,进行阅读课堂教学读写结合教学策略的交流。2、选定课例,解读教材,找准课文的读写结合训练点,进行课内读写结合训练的有效设计。3、执教教师自己独立进行设计,上研究课,教研组全体成员进行听课、评课。 今天林燕老师上的习作五就是感受父母的爱,写父母爱自己的一件事,学习如何抓人物的动作、语言、神态、心理活动来把事情写具体,要有真情实感。在教学中,林老师以学生的生活为基础,举行综合性学习,了解了有关爸爸妈妈爱孩子们的一些事例,然后进行归纳,看着这些熟悉的事例,孩子们深有感触,原来父母的爱就是从这样的小事中体现出来的,再指导孩子们写作,孩子们就感觉自己有话要说,有话可写,这样水到渠成,情感得以升华。 抓准单元的目标,结合本单元的要点,深入孩子们的生活,进行有效地设计,从读学写,这样能够夯实孩子们写作的基础,提高孩子们的写作能力,为高年级篇章的习作打下坚实的基础。 本学期我们关注的重点是在阅读教学中如何深入挖掘教材,找准课文的读写结合训练点,进行课内读写结合训练的有效设计。 我们细细翻阅三年级下册语文课本所入选的文章,发现在思想教育、题材选取、体裁安排、谋篇布局、遣词造句等方面,几乎都有供学生发挥的空间。教学中,可以把教材蕴含的这种内在潜力挖掘出来,充分利用它来对学生进行读写训练。 我们教研组的老师就认真研究教材,努力寻找了每课读写结合的训练点。发现这么几处可以进行训练。 1.空白处补写。 例如学《荷花》这篇课文时,让学生在学习第3节“这么多的白荷花,一朵有一朵的姿势。”时,围绕“有的……有的……”的句式描述白荷花的各种姿势进

复合文档文件格式解析-修复照片,word文件必备知识

复合文档文件格式研究 复合文档(Compound Document)是一种不仅包含文本而且包括图形、电子表格数据、声音、视频图象以及其它信息的文档。可以把复合文档想象成一个所有者,它装着文本、图形以及多媒体信息如声音和图象。目前建立复合文档的趋势是使用面向对象技术,在这里,非标准信息如图像和声音可以作为独立的、自包含式对象包含在文档中。Microsoft Windows就是使用这种技术,叫做―OLE2 stora ge file format‖或―Microsoft Office compatible storage file format‖。 当然Excel、Word等都是用这种格式存储的。本文主要研究复合文档的二进制结构,本文的目的就是为另一篇文章《Excel文件格式研究》(创作中)做准备的。 本文是在英文资料的基础上完成的,文中某些术语的翻译可能不够标准,但都会给出英文原名。关于这方面的中文资料网上几乎找不到,如果您有的话,请发到我的邮箱,谢谢。由于本人水平有限,文中错误难免,欢迎大家批评指正。 目录 第一章仓库与流(Storages and Streams 第二章扇区与扇区链(Sectors and Sector Chains 第三章复合文档头(Compound Document Header 第四章扇区配置(Sector Allocation 第五章短流(Short-Streams 第六章目录(Directory 第七章文件实例剖析 第一章仓库与流 复合文档的原理就像一个文件系统(文件系统:如FAT与NTFS)。复合文档将数据分成许多流(Streams),这些流又存储在不同的仓库(Storages)里。将复合文档想象成你的D盘,D盘用的是NTFS(NT File System)格式,流就相当于D盘里的文件,仓库就相当于D盘里的文件夹。 流和仓库的命名规则与文件系统相似,同一个仓库下的流及仓库不能重名,不同仓库下可以有同名的流。每个复合文档都有一个根仓库(root storage) 第二章扇区与扇区链 2.1 扇区与扇区标识

C++中Txt文件读取和写入

C++中Txt文件读取和写入 标签:c++nullstringios文本编辑file 2012-10-07 16:58 45182人阅读评论(3) 收藏举报 分类: C/C++基础(75) C++中Txt文件读取和写入 一、ASCII 输出 为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用 取代< fstream.h>,所有的C++标准头文件都是无后缀的。)。这是的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了!但这篇文章介绍的方法,我们分别使用"ifstream"?和"ofstream" 来作输入输出。 如果你用过标准控制台流"cin"?和"cout," 那现在的事情对你来说很简单。我们现在开始讲输出部分,首先声明一个类对象。 ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。 fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件. ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。 int num = 150; char name[] = "John Doe"; fout << "Here is a number: " << num << "/n"; fout << "Now here is a string: " << name << "/n"; 现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。 回写看起来像另一次输出, 然后调用方法关闭。像这样:

小学语文教学论文:四年级阅读教学中加强“读写结合”训练途径的探索

小学语文教学论文:四年级阅读教学中加强“读写结合”训练途径的探索 阅读与习作是语文学习的重头戏,而读写结合又是提高语文学习效率的最佳途径之一,它根植于语文教学的传统精华,符合语文教学规律,而且实践也证明它对于提高语文教学质量显示出强大的生命力。叶圣陶老先生在《兼论读和写的关系》中指出:“语文包括阅读和写作两个方面。……读写结合是提高语文阅读能力和写作能力的根本方法。读是学好语文的基础,就如同造房子一样,基础打得越深越坚实,房子才能盖得又高又大。写是学习语文的关键。这就像踏脚踏车一样,道理很简单,但是你只懂得道理而没有实际的练习,踏上去还是要掉下来的。写就是练习的过程。读和写是学好语文的两个方面。他们之间是相辅相成的,只要多读多写,并且把读写密切结合起来,阅读能力和写作能力才能逐步得到提高” 。因此,语文老师要在课堂上下功夫,引导学生把读和写结合起来,坚持以学生为主体,教师为主导,训练为主线,让学生爱读“乐”写,提高学生的语文素养,下面就与老师们分享几个读写结合的训练途径,不当之处还请指正。 一、通过模仿,实现读写结合。 朱熹曾说:“古人作文作诗,都是模仿前人而作文之。”儿童语言学习的基本途径之一是模仿,心理学家告诉我们,儿童的知识贫乏,经验不足,模仿是他们的天性。我认为模仿是写作的捷径,仿写是化别人的内容为自己服务,这样才能使自己的写作水平有所提高。课文为学生们提供了很多仿写的资源,教师可以依托文本并超越文本,指导学生仿句子、仿段落、仿思路,只要找准训练点,将阅读写作更为直接、更为密切的融合起来,从

而促进学生读写能力的同步发展。 1. 仿写句子 句子是课文的基本构件,是课文主题的基本载体,是阅读教学的着力点,对那些用词准确、描述生动、形式特殊的句子进行仿写,是引导学生积累词句、锤炼语言能力的最佳方式。在教学过程中,我们要善于捕捉文中佳句,及时加以揣摩、仿造,引导学生从仿写中发现和掌握各种句子的词语搭配关系以及句式的特点,有效建立句子的概念,提高学生遣词造句能力。小学阶段重点仿写的句子有:用词准确、刻画生动、描绘形象的句子,比喻恰当的句子,比拟形象的句子,排比手法运用恰如其分的句子,关联词使用得当的句子等。如《三顾茅庐》中模仿课文的句式用“来到……,只见……”的句式写一处景色,先请学生自读课文中语句,找出作者描写了隆中哪几种景物,启发学生思考作者是怎样描写这些景物的?抓住了哪个特点用了哪个词?用了哪种修辞手法,老师帮助学生总结归纳出一些写法,再让学生迁移训练。 2. 仿写段落 在教学中遇到一些描写精彩生动,或与学生写作结合紧密、有代表意义的结构段,尤其是课文的开头、结尾、人物肖像描写、心理刻画、对话方式、自然环境描写等精彩段落,都可以用来进行仿写。我们要注意从段落的仿写中让学生了解按事情发展顺序、按时间顺序、按空间顺序、按先总结后分述、按先分述后总结、按并列段式等段的构成方式,逐步形成段的概念。并从段落的仿写中让学生积累应用人物肖像、心理、动作、对话以及自

电子文件存用分离研究和实现

电子文件存用分离研究和实现 1引言 信息化是当今社会发展的一大趋势,以计算机技术和网络技术为核心的现代信息处理技术正深入到社会的各个领域和各个层次,大量的信息资源以电子文件的形式产生和出现。这些电子资源中,相当大一部分具有相当高的保存和利用价值。如何安全、高效和长久的利用好这些电子资源已经成为一个迫切需要解决的问题。2电子文件存用分离的必要性 伴随电子政务和办公自动化在我国的的快速发展和高度普及,大量具有保存价值的电子文件不断产生。但是,目前对这些电子文件的管理和利用仍然存在着很多问题。 2.1电子文件的安全性堪忧 目前,我国大部分档案系统中对电子文件的利用都是基于电子文件原件的利用。对于这种利用方式,电子文件的真实性无法得到有效的保障,电子文件的外泄和扩散缺乏有效的控制手段,电子文件受到病毒感染和人为破坏的风险性比较高。 2.2电子文件的利用效率比较低 电子文件能否有效利用是衡量一份电子文件存在价值的一个重要的指标。在我国,目前电子文件的利用效率仍然比较低。产生这种现状的主要原因是我们缺乏对电子文件进行有效利用的手

段,对电子文件进行利用的成本比较高。2.3电子文件的管理还缺乏统一的事实标准和格式自1999年以来,我国相继发布了《电子文件归档与管理规范》(GB/T18894-2002)、《纸质档案数字化技术规范》(DA/T31-2005)、《公务电子邮件归档与管理规则》(DA/T32-2005)等电子文件管理的规范和规则。但是我们现有的管理系统和与规范相适应的技术手段仍然有限,我们还缺乏对规范实现的技术支撑体系。 3电子文件存用分离的设计思路 电子文件的存用分离是指对各种类型格式的电子文件,通过中间件的加工和转换后以一种统一的标准格式进行利用的技术手段。通过存和用的分离,可以保护原电子文件的安全,提高电子文件的利用效率,并且能够统一文件的格式以完成对规范和标准的支撑。 4电子文件的特点———多样化和封闭性 实现电子文件存用分离的瓶颈是电子文件类型和格式的多样化和相当大一部分电子文件格式的封闭性。电子文件格式的多样化是指当前我们所产生的电子文件的类型多样化和电子文件格式的多样化。我们所常见的电子文件型和电子文件格式如表1所示。电子文件格式的封闭性是指某种类型或者某种格式的电子文件是某一厂商私有的电子文件格式,他实现的时候并没有遵循某种格式标准,实现之后也没有将他所使用的格式公开化,也没有将

二进制文件读写

今天终于弄明白怎样使用C++读写二进制文件了。 要读取文件必须包含头文件,这里包含了C++读写文件的方法。可以使用fstream类,这个类可以对文件进行读写操作。 1、打开文件。 打开文件可以有两种方式,第一种可以使用fstream类的构造函数。fstream file("test.dat",ios_base::in|ios_base::out|ios_base::app); 另外一种方法就是使用open函数。 fstream file; file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);

这样就可以打开一个可读写的文件了。如果文件不存在的话,就会创建一个新文件并且以读写方式打开。 这里需要说明一点,如果文件不存在的话,open函数中第二个参数必须包含 ios_base::out|ios_base::app, 否则就不能正确创建文件。 2、写文件。 先进性写文件的操作否则读一个空文件是没有意义的。 既然是写二进制文件可以向文件中写入一个整形值。写二进制字符只能使用write函数。但是write函数的原形是write(const char * ch, int size)。第一个参数是char *类型,所以需要把将要写入 文件的int类型转换成char *类型。这里的转换困扰了我好几天,不过终于弄明白了。代码如下。 int temp; file.write((char *)(&temp),sizeof(temp)); 3、读文件。 可以写文件了,读文件就好办多了。读文件需要用到read函数。其参数和write大致相同,read(const char * ch, int size)。 要把内容读到int类型变量中同样涉及到一个类型转换的问题。和写文件一样。 int readInt; file.read((char *)(&readInt),sizeof(readInt)); 这样文件中的int值就读入到int型变量readInt中了。 4、文件指针。 在文件的读写过程中往往需要对文件进行选择性读取。所以需要进行文件指针的移动。这是需要用到seekg和seekp函数。 在fstream类中有两个文件指针,一个是读取文件的指针,一个是写文件的指针分别用tellg 和tellp文件来取得指针的位置。 同样seekg和seekp两个函数分别是对这两个指针进行移动的函数。这两个函数的参数都是一样的。 先对几个枚举类型进行一下说明: ios_base::beg ——文件开始位置 ios_base::cur ——文件当前位置 ios_base::end ——文件末尾位置 下面以seekg为例说明一下指针移动的方法: file.seekg(3) ——指针移动到第三个字符的位置 file.seekg(ios_base::beg) ——指针移动到文件开头 file.seekg(ios_base::end) ——指针移动到文件末尾 file.seekg(-3,ios_base::cur) ——指针当前位置向前移动三个字符 file.seekg(3,ios_base::cur) ——指针当前位置向后移动三个字符 file.seekg(3,file.tellg()) ——指针当前位置向后移动三个字符 file.seekg(file.tellg()+3) ——指针当前位置向后移动三个字符 5、对文件操作完毕后别忘了关闭文件。 file.close();

复合文档二进制存储结构通俗讲义及文件头的修复

复合文档二进制存储结构通俗讲义 作者dengyanhui 首先,大家可以将复合文档与FAT文件系统对比起来学习,复合文档和FAT文件系统有许多相似之处。 1.复合文档类似于FAT文件系统,大家在理解的时候可以把复合文档和文件系统放到同 一个层次; 2.FAT文件系统有DBR ,FAT表目录。那么对应的复合文档就是文件头,主扇区配置 表(MSAT),扇区配置表(SAT),短扇区配置表(SSAT)和复合文档的目录; 3.在FAT文件系统中,文件采用扇区为单位存储数据,多个扇区组成簇,文件占用多少 个簇,占用了哪些簇,簇链是怎样的这个就是由FAT表记录的。相对应的复合文档中,数据也采用扇区来存储数据,只是复合文档中的扇区有基本扇区和短扇区之分。在文件系统中一个扇区占用512个字节,在复合文档中,扇区的大小在文件头中有规定,不过基本都是512个字节。短扇区的大小也在文件头中作出了规定。一般是64个字节。 4.在复合文档中,数据信息被叫做流,按照流的大小有基本流和短流之分,按照功能来 分,有控制流和数据流之分;流相当于文件系统中的文件,文件系统中的文件夹在复合文档中就对应仓库。那么流存在哪里呢?文件系统中数据以扇区来存储,在复合文档中,基本流以扇区来存储,短流由短扇区来存储。而多个短流就组成短路存放流,而且短流存放流是以扇区来存储的;这里给大家总结一下: ●流以扇区来存储; ●短流以短扇区来存储; ●短流组成短流存放流,短流存放流也是以扇区来存储的; ●在文件系统中文件以簇来管理,多少个扇区组成一个簇,在DBR中有记录,相应 的在复合文档中,基本流的大小也是在文件头中记录的,一般是8个扇区,也就 是说基本流的大小相当于簇的大小一样; 5.在文件系统中,FAT表管理文件的簇链,而在复合文档中,这个工作交给了主扇区配 置表,扇区配置表,短扇区配置表这三个配置表。 ●上述三个配置表记录的和FAT表记录的都是表明扇区或者簇的占用情况的;只是 在复合文档中区分的更细致; ●MAST记录的是SAT的占用扇区情况,也就是说,MAST的功能就是记录SAT 占用了哪些扇区,哪些扇区的编号是多少,只是我们这里叫做SID; ●SAT记录的就是一个流占用扇区的情况,一个流占用哪些扇区,哪些扇区的SID 是多少; ●SSAT记录的就是短流占用扇区的情况; ●这些配置表的大小,起始扇区在文件头中都有记录的就像文件系统的DBR记录 FAT表的大小一样。 ● 6.目录(directory)就是一种控制流,由一些列的目录入口(directory entry)组成,每 一个目录入口就指向一个流或者仓库。 7.下面给出复合文档的大概存储结构的实例分析:

二进制文件和文本文件的详细以及如何生成二进制文件-推荐下载

二进制文件和文本文件的详细以及如何生成二进制文件? 技术随笔 2010-05-01 19:13:56 阅读226 评论0 字号:大中小订阅 这个问题一直困扰了很多年,可能是我没有认真的去思考。我相信很多人可能和我一样很纠葛,到底编译器也好,汇编器也好是如何工作的呢?到底怎么回事?为什么会运行呢?这是让我们这些看着windows 学习电脑的人真的很难去理解计算机的内部结构。其实,这一切都只是障眼法,下面我就来给大家细细说说我对计算机的理解。 解答1:编译器是怎么回事? 所谓编译器,顾名思义就是将一种文本格式转换成另一种文本格式。比如将字符串echo "hello"; 转换成printf("hello"); 这其实是php语言转成c语言的一种表示。这只是一种简单的描述,其实很大一部分的编译器是将源语言转换成了汇编语言。下面我们来看看 C 语言中的经典hello word,通过gcc编译后生成的汇编是怎么回事。 c语言源码: #include int main() { printf("hello world\n"); } 通过编译器后,编译器把这个翻译成了另一套字符串,其实就是汇编语言: .file "hello.c" .section .rodata .LC0: .string "hello world" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16,%esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp movl $.LC0, (%esp) call puts addl $4, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main .ident "GCC: (GNU) 4.1.2"

读写结合,追求高效课堂

读写结合追求高效课堂 随着课程改革的深入开展,语文教师的语文意识在不断增强,阅读教学中不再只有滔滔不绝地说,有声有色地读,课堂练笔也成为了语文课堂教学的一道亮丽风景线,它经常成为压轴节目。不可否认,在崇尚读的今天,课堂练笔无疑是一种冷静的思考,这是很有必要的!然而综观我们语文课堂中的练笔,是否都真正地有效呢?让我们来聚焦几堂语文课。 一、随心所欲,天女散花 阅读课上的练笔应有一定的练习意义,即目的。目的不应该包罗万象,否则就失去其练习的实际意义。但是,实际教学中,教师往往是把练笔当做“作料”,想到怎么练就怎么练,就像是“天女散花”,想怎么散就怎么散,随心所欲。在教学中往往“为练笔而练笔”,事先没有预定的教学目标,或者教师对教学目标的把握不够准确,使得练笔显得浮华有余,价值不足。如一位教师教学《白鹭》,课文结尾处是:白鹭实在是一首诗,一首韵味无穷的诗。教师问学生:“你们还能把白鹭想象成什么呢?”郭沫若的诗本身就是流淌着诗意,教师在这儿本来是拓展学生思维的训练,但是这一练笔本身就比较狭窄,由于教师的把握失准,从而导致学生“胡言乱语”,所说的内容对于语言训练没有意义。 二、思考不足,生搬硬套 教学的方式方法是灵活多样的。有些教师设计了课堂小练笔,却缺乏全面的思考,使课堂小练笔出现了画蛇添足、生搬硬套的现象,无法使学生体会到语言文字的好处,无法激发他们的学习兴趣。如学习《地震中的父与子》时练的是:你想对其中的父亲或者儿子说些什么?学习《狼牙山五壮士》练的是:你想对他们其中一位说什么?学习《圆明园的毁灭》练的是:假如你是皇帝、大臣、官兵、老百姓其中的一位,你会做什么?……由于学生缺乏生活体验,只会写出一些干巴巴的陈词滥调,而且以上的小练笔形式只不过是一种“公式”代入法,生搬硬套,这种方法是不可取的,它不仅无法达到课堂练笔的目的,甚至可能会使学生产生厌烦的情绪,不利于语文的教学。 那么,如何把写的训练有机融合于阅读教学之中,做到读写结合、相得益彰呢?根据和美语文的理念、“融通式”高效课堂教学模式追求两极融通的和美境界的理论,关于读和写,在具体教学操作过程中,笔者认为可以挖掘文本资源,找到读写的融通点,使读写融通,以收获课堂的高效。 融通点一——内涵丰富的词语 课文中有些重点词语,是语言形象、语言技巧、语言情感的聚集点。对于这些词语,教师可引导学生想象挖掘词语的形象内涵,感悟理解词语的情感内涵,还可以通过练笔把它还原成具体可感、触手可及的鲜明形象。 《秋夜将晓出篱门迎凉有感》一诗中有这样两句:遗民泪尽胡尘里,南望王师又一年。其中诗中的“胡尘”一词含义丰富、意蕴深刻。湖州市吴兴区的周明珠老师在教学这首诗时,紧紧抓住了“胡尘”一词展开教学。 师:同学们,“胡尘”是指怎样的尘土呢? 生:这是胡人铁骑践踏飞扬而起的尘土。 …… 师:这仅仅是敌人飞扬跋扈、胡作非为飞扬而起的尘土吗?这些飞扬的尘土里还沾染着什么呢? 生:还沾满了百姓的泪水。 生:这不仅是尘土,还沾满了百姓的血和泪。 ……学到这儿,教师马上激情引导:老百姓在敌人的铁骑之下,流尽了眼泪。听,哀声遍野;看,生灵涂炭……透过“胡尘”这个血淋淋的词,你仿佛看到了什么,仿佛听到了什么?来,把你看到的、听到的写成几句话吧。

[工作]用WinHex修复损坏的复合文档文件头

[工作]用WinHex修复损坏的复合文档文件头用WinHex修复损坏的复合文档文件头 说明: 1、本教程仅仅针对复合文档(比如Word、Excel等)的文件头损坏后的修复. 2、请允许我假设你已经了解复合文档的结构,至少你能知道复合文档中的一些术语(比如:SAT、SSAT MSAT、标准流、短流等) 现象 打开这个文档时出现乱码(如图): 分析数据 用WinHex打开这个文档,如下图: 分析:这个文档的文件头损坏了,继续分析后面的内容损坏没有,现在把这个文档设置为磁盘(如图),复合文档在储存数据的最小单位是块(一个块是512个字节,相当于一个扇区的数据,所以有时我们也把它称为扇区),这样操作后看到的数据可以以一个扇区的形式呈现,便于分析和手工重建。

经过分析数据发现,这个文档好像只有第0扇区的数据完全破坏了,这个扇区的内容是复合文档的文件头内容,网上有恢复复合文档文件头的视频教程(这个论坛上就有~~),好像就是把一个正常的复合文档的前几行数据复制一下就行了,从理论上讲恢复的成功率极小,几乎是0。因为复合文档的结构和FAT文件系统极其相似,但比它还要复杂一些(涉及到短流、SSAT和MSAT),复合文档的文件头相当于FAT文件系统中的DBR,有很多参数是要根据文件的具体数据进行相应的修改。下图中红底黑字部分描述的就是一般要修改的内容(有7处,小的文档一般只改其中的5处),其它部分可以用一个正常的复合文档的相应数据代替。 说明:要修改的文件头内容: 参数扇区0 1 2 3 4 5 …………N,1 1、存放扇区配置表(SAT)的扇区总数(2CH,2FH) 通过分析开始几个扇区的数据很容易判断出物理1扇区的数据就

依托文本训练习作

依托文本训练习作 一、对依托文本训练写作的认识 语文教学一直强调要做到文道统一,也就是说语言文字训练和思想教育是统一的,相辅相成的。教师要因文解道,因道悟文,引导学生通过语言文字正确理解课文的思想内容,并在领会思想内容的基础上,加深对语言文字的理解,收到语文教学应有的效果。 语文学科对于提高学生的思想素质和科学文化素质,培养有理想、有道德、有文化、有纪律的社会主义公民,具有重要的意义。因此,在语文教学过程中进行思想品德教育,是建设社会主义精神文明的需要,也是由语文学科本身性质和特征决定的。 语文教学的传道有它自身的特点,所谓“文”“道”结合,就是要求教师把德育渗透到语文教育之中,缘文释道,因道解文,使学生思想上受到教育,感情上得到熏陶,语文能力获得提高。 在悟“道”的同时不能轻“文”,正所谓“皮之不存毛将焉附”。 在语文教学一线的老师大多心知肚明,现在新课程的模块和专题教学,在读的方面只是突出了感悟和体验其情感价值,即吸纳其别人思维成果,却无暇顾及领会思想情感的载体——表达方法、构思技巧、叙述手段等,也即忽略了别人的思维方法和过程。 在写的方面,由于近年考试主打题型的话题作文所产生的负面效应,以及缺乏具有操作价值的学生写作理论指导教材,还有语文老师自身的写作素养的欠缺等诸多因素,写作课实际上处于语文课的边缘。在读和写的关系方面,虽然叶圣陶、吕叔湘、张志公等先辈早就提出过“读写结合”“读写互动”等教学建议,新课标也提出了重视语言文字运用,但实际工作中,很多人因为对读写的认识不到位,读写关系

自然成为“读非为写,写非所读”的两张皮,结果是,读是一套,写是一套,再加上考又是另一套,互不对接,各行其是,更加剧了语文学习无序无范的状态。 如果我们把语文课堂教学看成是100%的功效的话,那读和写这两项主要训练内容各占50%,我们在教学中放掉了写作的50%,在读方的方面又丢弃了25%的关于作者写作思维过程的内容,等于说,我们当今的语文教学满打满算也只能收取25%的效益,再加上考试方式、学生学习态度等因素,看还能收获多少? 写作能力是从阅读中培养的。更精确地说,从阅读中,我们学会写作风格这种独特的写作语言。但人们一般的想法是写作能力是从实际写作过程中培养的,这是错误的说法。 什么是依托文本? 新课程标准明确指出:语文教学的过程就是学生、教师与文本之间的对话过程。文本就是学生学习语文知识,培养语文能力,提高语文素养的一个载体。依托文本就是借助文质兼美的文章,教学生学会读书、学会表达、学会描写。用教材中提供的文本作例子,把身边所见(所闻)和生活中的经历让学生能够用自己的语言系统地表达出来,并用笔描述出来。叶圣陶先生说过:“教材无非就是个例子。”凭借这个例子,要使学生能够举一反三,练习阅读和作文的技巧。 1 依托文本的意义和作用: 任何语文教学的新兴模式与改革,都离不开文本,都是依托文本进行的。语文课标中指出:“应该让学生更多地直接接触语文材料,在大量的语文实践中掌握运用语文的规律”。文本就是学生在课堂上进行语文学习、实践的凭借,课堂教学首先要依托文本,要引导学生积极地与文本对话与作者对话。

相关主题
文本预览
相关文档 最新文档