如何创建自己的程序专用的文件格式

lC36y9MVTJ9M 2014-12-02 11:35:08
我希望为在自己的程序创建一种文件格式,用于存储数据,只有我自己的程序可以读写,假设其扩展名为.dat。

我不知道如何定义文件头、如何组织文件索引,这几个词都是从网上的只言片语中看来的。

为避免麻烦,暂时先不考虑数据加密。

请给出教程或者链接。

我正在使用C++Builder。
...全文
1721 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
血雨ky 2021-07-30
  • 打赏
  • 举报
回复 1

还有谢谢贴主的链接,去学习了,现在我也是刚学编程,你们说的话太专业了还看不懂,等我能看懂你们说的话的时候,再来你们的评论里学习

血雨ky 2021-07-30
  • 打赏
  • 举报
回复 1

请发表友善的言论(来自默认)

chun.zhang 2015-05-18
  • 打赏
  • 举报
回复
受教了, 谢谢楼主!
lC36y9MVTJ9M 2014-12-06
  • 打赏
  • 举报
回复 1
引用 27 楼 lhylhy 的回复:
[quote=引用 13 楼 u011707780 的回复:] [quote=引用 12 楼 lhylhy 的回复:] 最简单就是没有文件头,没有索引,有固定长度固定结构的记录组成,靠文件长度判断记录数。 复杂一点有文件头,文件头包括识别码,版本号,记录数,后面就和前面的一样。 更复杂记录不定长,每个记录有自己的识别码。 索引啥的就看需要。不是很大的文件没必要搞。
嗯,根据你所说,按我的需求,会有多种不定长的记录,那么是需要识别码的。 请告诉我这方面的知识哪儿找得到好吗?书或者pdf或者在线的都行。我想自己看。[/quote] 找一些介绍已有文件格式的文章看看吧,按照你自己常用的文件格式,看看这些文件格式是如何定义的。[/quote] 我已经找到了这些: http://wenku.baidu.com/view/60dcf0b8c77da26925c5b026.html http://www.360doc.com/content/12/0310/10/1351456_193197821.shtml http://www.shenmeshi.com/recreation/recreation_20080422141745.html 正在学习中。谢谢你提供的思路:先看已有的格式定义,再自定义格式。
lhy 2014-12-05
  • 打赏
  • 举报
回复
引用 13 楼 u011707780 的回复:
[quote=引用 12 楼 lhylhy 的回复:] 最简单就是没有文件头,没有索引,有固定长度固定结构的记录组成,靠文件长度判断记录数。 复杂一点有文件头,文件头包括识别码,版本号,记录数,后面就和前面的一样。 更复杂记录不定长,每个记录有自己的识别码。 索引啥的就看需要。不是很大的文件没必要搞。
嗯,根据你所说,按我的需求,会有多种不定长的记录,那么是需要识别码的。 请告诉我这方面的知识哪儿找得到好吗?书或者pdf或者在线的都行。我想自己看。[/quote] 找一些介绍已有文件格式的文章看看吧,按照你自己常用的文件格式,看看这些文件格式是如何定义的。
lC36y9MVTJ9M 2014-12-05
  • 打赏
  • 举报
回复
引用 14 楼 LinuxCard 的回复:
要不楼主看看ntfs结构吧,或者 fat32呗,看着楼主也只是随便想想,我们也就随便说说吧
为什么要看文件系统……我可没指望从簇的层面组织数据。
lC36y9MVTJ9M 2014-12-05
  • 打赏
  • 举报
回复
引用 15 楼 zoubin1986 的回复:
[quote=引用 11 楼 u011707780 的回复:] [quote=引用 10 楼 zoubin1986 的回复:] 你想多了,读懂两个API:ReadFile和WriteFile 存储数据任你蹂躏,文件后缀名?我想叫.XXXXXX都没问题! 我现在就用这两个函数存储超长循环的试验数据,读写速度甩BDE几条街……(肯定有定义辅助数据,比如我定义文件第一个数据段代表数据段总数等等之类的) 当然,你想理解数据的存储,准确地说应该是数据库的存储,好好摸一摸BED是很有必要的。摸完之后,你就会发现BED有一堆你不满意的东西,那么你就可以开始用API自己写数据库实现了……然后写着写着,为了加快某些特定条件下的访问速度,你就会引入索引之类的概念了,然后好好想想在各种情况下如何处理……然后就又会发现BDE其实也很牛啊……然后继续自己实现,然后就掉入深渊了……(玩笑)这里要注意一点,任何程序,只要圆满地解决最常见的80%的问题就好了,剩下的20%就做特例对待处理。最最重要的一点,自己想办法解决问题,不要向别人要答案!自己实现它,哪管他是不是别人眼中的标准,最重要的是你自己用自己的方法实现了,至于完善性能那是你深造的过程。 继续说下去就很扯了,不自己去想去实现,我也不知道说些什么了,加油!
我就起了个.dat的后缀名是戳中你的G点了么?我这不明摆着是说随便什么后缀名都无所谓,我用dat笼统地概括了么。 我哪里有说要弄数据库了?就是想存数据到二进制文件而已。所以你后面这么长一段话我也不知道是写给谁看的。 给个教程或者链接我自己看还不行么?难道这样就算是“向别人要答案”?我就是因为尝试了很多关键字搜索结果都不满意才发帖问的。 你叫我看两个API,好的,你能告诉我这俩货在哪里么?[/quote] windows系统API都不知道在哪里……请问你是刚入门么,随便一个编译器的help都有介绍,随便找一本系统AIP的书都有介绍,这都不知道我真无法理解你在这叫嚣个啥,你自以为存储个二进制和数据库没关,真的没关么?所有文件,不管是什么文件什么后缀名其根源哪个不是存储二进制,解析方式不一样罢了,而数据库是一种最典型的存储数据格式,由此入手能让你对如何存储数据更了然。songhtao老大给你简单的指引,你说人家水,我和你说这么多,你说我XX,得了,你继续按你自以为是的思路问下去吧,我就看谁能给你满意的答案……我也想我想学啥就有专门的书或者教程掉我脑袋上,你可以问遍CSDN谁有这等奇遇,我和你说那么多就是告诉你自己去想,自己去造,遇到想不通的来CSDN问问求个点拨,谁人不是如此!如果你一开始就说自己连API都不知道咋查,我想songhtao老大也不至于回复你来找你骂了[/quote] 你这么厉害,是谁教你查windows系统API的你能告诉我么?不会连 “查windows系统API” 也是你 “自己去想,自己去造” 所得出来的结果吧? 学了一学期C++,老师最后都没告诉我选Debug和Release的区别,我拿着Debug的程序到处找人测试被人羞辱一脸,最后还是高中同学告诉我要用Release的,你说我这样的水平算不算入门? “随便一个编译器的help都有介绍,随便找一本系统API的书都有介绍”,那么你能随便告诉我一个Borland C++ Builder Compiler的help在哪里吗?能随便给我一本系统API的书吗?我就不求你说看第几页到第几页了,给个书名就那么难? 我的学习过程很简单,用过ini保存程序配置,用过xml保存结构化的数据,现在想尝试自己定义一种格式让别人不能轻易修改。我怎么知道我必须要查API才能实现这样的功能,我只会查控件的使用方法,还是靠百度来的。 难道问问“有什么教程”就算是奇遇了?你到现在为止看过的所有教程都不是别人告诉你的? 我说我要达成目的A,你说如果达成了目的B,连A也不在话下。但是你没有告诉我怎么达成目的B,那在我看来毫无意义,我还不如搞清楚如何达成目的A。我不求达成目的B。
孟豆豆 2014-12-05
  • 打赏
  • 举报
回复
引用 11 楼 u011707780 的回复:
[quote=引用 10 楼 zoubin1986 的回复:] 你想多了,读懂两个API:ReadFile和WriteFile 存储数据任你蹂躏,文件后缀名?我想叫.XXXXXX都没问题! 我现在就用这两个函数存储超长循环的试验数据,读写速度甩BDE几条街……(肯定有定义辅助数据,比如我定义文件第一个数据段代表数据段总数等等之类的) 当然,你想理解数据的存储,准确地说应该是数据库的存储,好好摸一摸BED是很有必要的。摸完之后,你就会发现BED有一堆你不满意的东西,那么你就可以开始用API自己写数据库实现了……然后写着写着,为了加快某些特定条件下的访问速度,你就会引入索引之类的概念了,然后好好想想在各种情况下如何处理……然后就又会发现BDE其实也很牛啊……然后继续自己实现,然后就掉入深渊了……(玩笑)这里要注意一点,任何程序,只要圆满地解决最常见的80%的问题就好了,剩下的20%就做特例对待处理。最最重要的一点,自己想办法解决问题,不要向别人要答案!自己实现它,哪管他是不是别人眼中的标准,最重要的是你自己用自己的方法实现了,至于完善性能那是你深造的过程。 继续说下去就很扯了,不自己去想去实现,我也不知道说些什么了,加油!
我就起了个.dat的后缀名是戳中你的G点了么?我这不明摆着是说随便什么后缀名都无所谓,我用dat笼统地概括了么。 我哪里有说要弄数据库了?就是想存数据到二进制文件而已。所以你后面这么长一段话我也不知道是写给谁看的。 给个教程或者链接我自己看还不行么?难道这样就算是“向别人要答案”?我就是因为尝试了很多关键字搜索结果都不满意才发帖问的。 你叫我看两个API,好的,你能告诉我这俩货在哪里么?[/quote] windows系统API都不知道在哪里……请问你是刚入门么,随便一个编译器的help都有介绍,随便找一本系统AIP的书都有介绍,这都不知道我真无法理解你在这叫嚣个啥,你自以为存储个二进制和数据库没关,真的没关么?所有文件,不管是什么文件什么后缀名其根源哪个不是存储二进制,解析方式不一样罢了,而数据库是一种最典型的存储数据格式,由此入手能让你对如何存储数据更了然。songhtao老大给你简单的指引,你说人家水,我和你说这么多,你说我XX,得了,你继续按你自以为是的思路问下去吧,我就看谁能给你满意的答案……我也想我想学啥就有专门的书或者教程掉我脑袋上,你可以问遍CSDN谁有这等奇遇,我和你说那么多就是告诉你自己去想,自己去造,遇到想不通的来CSDN问问求个点拨,谁人不是如此!如果你一开始就说自己连API都不知道咋查,我想songhtao老大也不至于回复你来找你骂了
LinuxCard 2014-12-05
  • 打赏
  • 举报
回复
要不楼主看看ntfs结构吧,或者 fat32呗,看着楼主也只是随便想想,我们也就随便说说吧
lC36y9MVTJ9M 2014-12-05
  • 打赏
  • 举报
回复
引用 23 楼 zoubin1986 的回复:
在你代码编辑区域输入 CreateFile, 然后选中它,然后F1……出来的东西是不是吓你一跳!!!
在C++ Builder中这么做,出来的仍然是IDE的帮助,主题是Code Editor。 我倒是知道按住Ctrl再单击函数名会出来函数声明(右击函数名选Find Declaration也行)。

WINBASEAPI
__out
HANDLE
WINAPI
CreateFileA(
    __in     LPCSTR lpFileName,
    __in     DWORD dwDesiredAccess,
    __in     DWORD dwShareMode,
    __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    __in     DWORD dwCreationDisposition,
    __in     DWORD dwFlagsAndAttributes,
    __in_opt HANDLE hTemplateFile
    );
WINBASEAPI
__out
HANDLE
WINAPI
CreateFileW(
    __in     LPCWSTR lpFileName,
    __in     DWORD dwDesiredAccess,
    __in     DWORD dwShareMode,
    __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    __in     DWORD dwCreationDisposition,
    __in     DWORD dwFlagsAndAttributes,
    __in_opt HANDLE hTemplateFile
    );
#ifdef UNICODE
#define CreateFile  CreateFileW
#else
#define CreateFile  CreateFileA
#endif // !UNICODE
就这样。
lC36y9MVTJ9M 2014-12-05
  • 打赏
  • 举报
回复
引用 22 楼 zoubin1986 的回复:
你想要知道的我思路,我还能把脑袋砍了给你啊! 读书破万卷下笔如有神,这么说好像是很装逼,可事实的确如此! 谁都是从菜鸟走过的,那些用法我咋知道,因为我肯抓住一个老师去问,诚恳地去问,人家不欠我东西,我理直气壮个蛋蛋! 就像 songhtao 的 自己定义一个二进制格式就可以了啊。 或者就用xml加密一下也行。 在我看来已经切中命题,而在你看来居然不知所谓,你这让人如何回答你!我生气不是因为你不知道,谁都是光个腚来这个世界的,我不爽的是你的态度,整得谁都欠你啥似得!我不是大牛,我就是小鸡肚肠,你尽情诅咒我吧!
的确,我关心的是思路,我关心的不只是“如何解决问题”,我还关心“如何想到解决这个问题的方法”。你也用不着砍脑袋。 像songhtao的回帖我看来就是水贴。我说,我知道使用方法A可以解决问题B,但是我不知道方法A的具体步骤,问方法A的具体步骤在哪里可以找到。结果songhtao说,用方法A就可以解决问题B。重复我所知道的有用么,搞得我一头雾水啊。我要是知道自己如何定义二进制格式,还要发帖问人?用xml加密,我知道拿zlib库压缩也算是加密了,还用得着songhtao再说一遍,何况我已经说了“暂不考虑加密”,他有看过我说什么吗?
lC36y9MVTJ9M 2014-12-05
  • 打赏
  • 举报
回复
引用 21 楼 zoubin1986 的回复:
不再想费力和你扯其它的了……你缺的不是教程,你缺的是F1作为计算机软件帮助调用的惯例都不知道,你缺的是每个软件菜单栏里的那一个帮助都不知道是做啥的……告诉你API名,你还来扯去哪查这些API怎么用,我们欠你的哦,你想要什么我们要专门订制给你准备一份教程或者例程恭敬地摆到你面前,还望你看得上眼否则又要被你说水了…… CreateFile创建文件 ReadFile读文件 WriteFile写文件 SetFilePointer移动文件指针 CloseHandle关闭文件 如果这些看了帮助还不懂,那么你赶紧去随便找一本C语言教程(是随便!!!)把文件系统看一看~ 二进制格式你想怎么定义是你的自由,没有谁说文件头必须是啥文件尾必须是啥,我就用第二个字段填写数据数量谁又能砍我的头!如果你依旧不知所谓! 那么你去用数据库,看看数据库是怎么个存储数据的方法,人家有哪些属性,那么都可以引入到你自己造的文件中,BDE不会,那office access会用吧,用用也一样,去体验一下,是借鉴人家有什么属性,不是让你去写数据库!先写出数据记录的存储实现,然后慢慢研究删除记录插入记录等操作的实现! 如果读到这里你还是一团乱麻……那么你的基础真的还没到自己造文件的地步 爆一句粗口,以上这他妈就是自己琢磨的过程,谁他妈哪本教程告诉我要这样做了!
这就是我们上课用的书:http://item.jd.com/1240227441.html,没有讲到文件系统,不过该书P479有讲到文件流的操作,有文件打开、文件关闭、文件操作等函数的讲解,包括对文本文件和二进制文件的操作。但是这不是我想要的,这都是函数的用法,我想知道的是文件头为什么是什么,索引是什么,索引和数据怎么组织成文件的。 我曾经搜索到 http://bbs.csdn.net/topics/358256 我就是想知道此贴中5楼所说的那些名词的概念、定义在哪里; 我求你别说数据库了,BDE不会也没听说过,office access听说过但不会,也没用过。我的C盘已经不容许我再装大型软件了(我没装在C盘可用空间也会变少),所以没法体验。你好像对数据库有着深深的执着……
孟豆豆 2014-12-05
  • 打赏
  • 举报
回复
在你代码编辑区域输入 CreateFile, 然后选中它,然后F1……出来的东西是不是吓你一跳!!!
孟豆豆 2014-12-05
  • 打赏
  • 举报
回复
你想要知道的我思路,我还能把脑袋砍了给你啊! 读书破万卷下笔如有神,这么说好像是很装逼,可事实的确如此! 谁都是从菜鸟走过的,那些用法我咋知道,因为我肯抓住一个老师去问,诚恳地去问,人家不欠我东西,我理直气壮个蛋蛋! 就像 songhtao 的 自己定义一个二进制格式就可以了啊。 或者就用xml加密一下也行。 在我看来已经切中命题,而在你看来居然不知所谓,你这让人如何回答你!我生气不是因为你不知道,谁都是光个腚来这个世界的,我不爽的是你的态度,整得谁都欠你啥似得!我不是大牛,我就是小鸡肚肠,你尽情诅咒我吧!
孟豆豆 2014-12-05
  • 打赏
  • 举报
回复
不再想费力和你扯其它的了……你缺的不是教程,你缺的是F1作为计算机软件帮助调用的惯例都不知道,你缺的是每个软件菜单栏里的那一个帮助都不知道是做啥的……告诉你API名,你还来扯去哪查这些API怎么用,我们欠你的哦,你想要什么我们要专门订制给你准备一份教程或者例程恭敬地摆到你面前,还望你看得上眼否则又要被你说水了…… CreateFile创建文件 ReadFile读文件 WriteFile写文件 SetFilePointer移动文件指针 CloseHandle关闭文件 如果这些看了帮助还不懂,那么你赶紧去随便找一本C语言教程(是随便!!!)把文件系统看一看~ 二进制格式你想怎么定义是你的自由,没有谁说文件头必须是啥文件尾必须是啥,我就用第二个字段填写数据数量谁又能砍我的头!如果你依旧不知所谓! 那么你去用数据库,看看数据库是怎么个存储数据的方法,人家有哪些属性,那么都可以引入到你自己造的文件中,BDE不会,那office access会用吧,用用也一样,去体验一下,是借鉴人家有什么属性,不是让你去写数据库!先写出数据记录的存储实现,然后慢慢研究删除记录插入记录等操作的实现! 如果读到这里你还是一团乱麻……那么你的基础真的还没到自己造文件的地步 爆一句粗口,以上这他妈就是自己琢磨的过程,谁他妈哪本教程告诉我要这样做了!
lC36y9MVTJ9M 2014-12-05
  • 打赏
  • 举报
回复 1
引用 18 楼 zoubin1986 的回复:
不再想费力和你扯了……你缺的不是教程,你缺的是F1作为计算机软件帮助调用的惯例都不知道,你缺的是每个软件菜单栏里的那一个帮助都不知道是做啥的……告诉你API名,你还来扯去哪查这些API怎么用,我们欠你的哦,你想要什么我们要专门订制给你准备一份教程或者例程恭敬地摆到你面前,还望你看得上眼否则又要被你说水了…… 你缺的不是技术,你缺的是很多计算机最基本的东西都似懂非懂,就这治学态度?你就继续码下去吧,时间证明一切
按F1出来的是IDE(对我来说也就是C++Builder)的帮助,这就是你口中“随便一个编译器的help”么?还是说你连IDE和编译器都分不清楚?即使看帮助能够解决我现在碰到的问题,我尝试了很多关键字但搜索效果不理想,我需要把帮助从头看到尾么? 我哪里有说要你 “专门订制” 教程了?你看过的教程给个链接不行吗?你看过的书说个名字不行吗? 你根本没有正面回答我的问题:是谁教你查windows系统API的你能告诉我么?不会连 “查windows系统API” 也是你 “自己去想,自己去造” 所得出来的结果吧? 你叫我查某个东西,好的,我愿意查,可是我不知道去哪儿查,你又不告诉我去哪儿查,只会摆出一副前辈的架势训斥”你连这都不会查“,你是天生就会查么? 你明明会,你就是不说。你有知识,你不教授不传承,等着它下蛋么?
孟豆豆 2014-12-05
  • 打赏
  • 举报
回复
不再想费力和你扯了……你缺的不是教程,你缺的是F1作为计算机软件帮助调用的惯例都不知道,你缺的是每个软件菜单栏里的那一个帮助都不知道是做啥的……告诉你API名,你还来扯去哪查这些API怎么用,我们欠你的哦,你想要什么我们要专门订制给你准备一份教程或者例程恭敬地摆到你面前,还望你看得上眼否则又要被你说水了…… 你缺的不是技术,你缺的是很多计算机最基本的东西都似懂非懂,就这治学态度?你就继续码下去吧,时间证明一切
lC36y9MVTJ9M 2014-12-04
  • 打赏
  • 举报
回复
引用 12 楼 lhylhy 的回复:
最简单就是没有文件头,没有索引,有固定长度固定结构的记录组成,靠文件长度判断记录数。 复杂一点有文件头,文件头包括识别码,版本号,记录数,后面就和前面的一样。 更复杂记录不定长,每个记录有自己的识别码。 索引啥的就看需要。不是很大的文件没必要搞。
嗯,根据你所说,按我的需求,会有多种不定长的记录,那么是需要识别码的。 请告诉我这方面的知识哪儿找得到好吗?书或者pdf或者在线的都行。我想自己看。
lhy 2014-12-04
  • 打赏
  • 举报
回复
最简单就是没有文件头,没有索引,有固定长度固定结构的记录组成,靠文件长度判断记录数。 复杂一点有文件头,文件头包括识别码,版本号,记录数,后面就和前面的一样。 更复杂记录不定长,每个记录有自己的识别码。 索引啥的就看需要。不是很大的文件没必要搞。
lC36y9MVTJ9M 2014-12-04
  • 打赏
  • 举报
回复
引用 10 楼 zoubin1986 的回复:
你想多了,读懂两个API:ReadFile和WriteFile 存储数据任你蹂躏,文件后缀名?我想叫.XXXXXX都没问题! 我现在就用这两个函数存储超长循环的试验数据,读写速度甩BDE几条街……(肯定有定义辅助数据,比如我定义文件第一个数据段代表数据段总数等等之类的) 当然,你想理解数据的存储,准确地说应该是数据库的存储,好好摸一摸BED是很有必要的。摸完之后,你就会发现BED有一堆你不满意的东西,那么你就可以开始用API自己写数据库实现了……然后写着写着,为了加快某些特定条件下的访问速度,你就会引入索引之类的概念了,然后好好想想在各种情况下如何处理……然后就又会发现BDE其实也很牛啊……然后继续自己实现,然后就掉入深渊了……(玩笑)这里要注意一点,任何程序,只要圆满地解决最常见的80%的问题就好了,剩下的20%就做特例对待处理。最最重要的一点,自己想办法解决问题,不要向别人要答案!自己实现它,哪管他是不是别人眼中的标准,最重要的是你自己用自己的方法实现了,至于完善性能那是你深造的过程。 继续说下去就很扯了,不自己去想去实现,我也不知道说些什么了,加油!
我就起了个.dat的后缀名是戳中你的G点了么?我这不明摆着是说随便什么后缀名都无所谓,我用dat笼统地概括了么。 我哪里有说要弄数据库了?就是想存数据到二进制文件而已。所以你后面这么长一段话我也不知道是写给谁看的。 给个教程或者链接我自己看还不行么?难道这样就算是“向别人要答案”?我就是因为尝试了很多关键字搜索结果都不满意才发帖问的。 你叫我看两个API,好的,你能告诉我这俩货在哪里么?
加载更多回复(10)
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088
《Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 1.3.1 下载Android源代码 1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载Android内核源代码 1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android应用程序 1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 重新打包Android系统镜像文件 第2章 硬件抽象层 2.1 开发Android硬件驱动程序 2.1.1 实现内核驱动程序模块 2.1.2 修改内核Kconfig文件 2.1.3 修改内核Makefile文件 2.1.4 编译内核驱动程序模块 2.1.5 验证内核驱动程序模块 2.2 开发C可执行程序验证Android硬件驱动程序 2.3 开发Android硬件抽象层模块 2.3.1 硬件抽象层模块编写规范 2.3.2 编写硬件抽象层模块接口 2.3.3 硬件抽象层模块的加载过程 2.3.4 处理硬件设备访问权限问题 2.4 开发Android硬件访问服务 2.4.1 定义硬件访问服务接口 2.4.2 实现硬件访问服务 2.4.3 实现硬件访问服务的JNI方法 2.4.4 启动硬件访问服务 2.5 开发Android应用程序来使用硬件访问服务 第3章 智能指针 3.1 轻量级指针 3.1.1 实现原理分析 3.1.2 应用实例分析 3.2 强指针和弱指针 3.2.1 强指针的实现原理分析 3.2.2 弱指针的实现原理分析 3.2.3 应用实例分析 第2篇 Android专用驱动系统 第4章 Logger日志系统 4.1 Logger日志格式 4.2 Logger日志驱动程序 4.2.1 基础数据结构 4.2.2 日志设备的初始化过程 4.2.3 日志设备文件的打开过程 4.2.4 日志记录的读取过程 4.2.5 日志记录的写入过程 4.3 运行时库层日志库 4.4 C/C++日志写入接口 4.5 Java日志写入接口 4.6 Logcat工具分析 4.6.1 相关数据结构 4.6.2 初始化过程 4.6.3 日志记录的读取过程 4.6.4 日志记录的输出过程 第5章 Binder进程间通信系统 5.1 Binder驱动程序 5.1.1 基础数据结构 5.1.2 Binder设备的初始化过程 5.1.3 Binder设备文件的打开过程 5.1.4 Binder设备文件的内存映射过程 5.1.5 内核缓冲区管理 5.2 Binder进程间通信库 5.3 Binder进程间通信应用实例 5.4 Binder对象引用计数技术 5.4.1 Binder本地对象的生命周期 5.4.2 Binder实体对象的生命周期 5.4.3 Binder引用对象的生命周期 5.4.4 Binder代理对象的生命周期 5.5 Binder对象死亡通知机制 5.5.1 注册死亡接收通知 5.5.2 发送死亡接收通知 5.5.3 注销死亡接收通知 5.6 Service Manager的启动过程 5.6.1 打开和映射Binder设备文件 5.6.2 注册为Binder上下文管理者 5.6.3 循环等待Client进程请求 5.7 Service Manager代理对象的获取过程 5.8 Service组件的启动过程 5.8.1 注册Service组件 5.8.2 启动Binder线程池 5.9 Service代理对象的获取过程 5.10 Binder进程间通信机制的Java接口 5.10.1 Service Manager的Java代理对象的获取过程 5.10.2 Java服务接口的定义和解析 5.10.3 Java服务的启动过程 5.10.4 Java服务代理对象的获取过程 5.10.5 Java服务的调用过程 第6章 Ashmem匿名共享内存系统 6.1 Ashmem驱动程序 6.1.1 基础数据结构 6.1.2 匿名共享内存设备的初始化过程 6.1.3 匿名共享内存设备文件的打开过程 6.1.4 匿名共享内存设备文件的内存映射过程 6.1.5 匿名共享内存块的锁定和解锁过程 6.1.6 匿名共享内存块的回收过程 6.2 运行时库cutils的匿名共享内存访问接口 6.3 匿名共享内存的C++访问接口 6.3.1 MemoryHeapBase 6.3.2 MemoryBase 6.3.3 应用实例 6.4 匿名共享内存的Java访问接口 6.4.1 MemoryFile 6.4.2 应用实例 6.5 匿名共享内存的共享原理 第3篇 Android应用程序框架 第7章 Activity组件的启动过程 7.1 Activity组件应用实例 7.2 根Activity组件的启动过程 7.3 子Activity组件在进程内的启动过程 7.4 子Activity组件在新进程中的启动过程 第8章 Service组件的启动过程 8.1 Service组件应用实例 8.2 Service组件在新进程中的启动过程 8.3 Service组件在进程内的绑定过程 第9章 Android系统广播机制 9.1 广播机制应用实例 9.2 广播接收者的注册过程 9.3 广播的发送过程 第10章 Content Provider组件的实现原理 10.1 Content Provider组件应用实例 10.1.1 ArticlesProvider 10.1.2 Article 10.2 Content Provider组件的启动过程 10.3 Content Provider组件的数据共享原理 10.3.1 数据共享模型 10.3.2 数据传输过程 10.4 Content Provider组件的数据更新通知机制 10.4.1 注册内容观察者 10.4.2 发送数据更新通知 第11章 Zygote和System进程的启动过程 11.1 Zygote进程的启动脚本 11.2 Zygote进程的启动过程 11.3 System进程的启动过程 第12章 Android应用程序进程的启动过程 12.1 应用程序进程的创建过程 12.2 Binder线程池的启动过程 12.3 消息循环的创建过程 第13章 Android应用程序的消息处理机制 13.1 创建线程消息队列 13.2 线程消息循环过程 13.3 线程消息发送过程 13.4 线程消息处理过程 第14章 Android应用程序的键盘消息处理机制 14.1 键盘消息处理模型 14.2 InputManager的启动过程 14.2.1 创建InputManager 14.2.2 启动InputManager 14.2.3 启动InputDispatcher 14.2.4 启动InputReader 14.3 InputChannel的注册过程 14.3.1 创建InputChannel 14.3.2 注册Server端InputChannel 14.3.3 注册系统当前激活的应用程序窗口 14.3.4 注册Client端InputChannel 14.4 键盘消息的分发过程 14.4.1 InputReader获得键盘事件 14.4.2 InputDispatcher分发键盘事件 14.4.3 系统当前激活的应用程序窗口获得键盘消息 14.4.4 InputDispatcher获得键盘事件处理完成通知 14.5 InputChannel的注销过程 14.5.1 销毁应用程序窗口 14.5.2 注销Client端InputChannel 14.5.3 注销Server端InputChannel 第15章 Android应用程序线程的消息循环模型 15.1 应用程序主线程消息循环模型 15.2 与界面无关的应用程序子线程消息循环模型 15.3 与界面相关的应用程序子线程消息循环模型 第16章 Android应用程序的安装和显示过程 16.1 应用程序的安装过程 16.2 应用程序的显示过程

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧