文件操作(6)课件.ppt
《文件操作(6)课件.ppt》由会员分享,可在线阅读,更多相关《文件操作(6)课件.ppt(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第第4讲讲文件操作文件操作什么是文件系统?什么是文件系统?n大容量大容量直接存取直接存取的的磁盘存储器磁盘存储器以及以及顺序存取顺序存取的的磁磁带存储器带存储器等的出现,为程序和数据等软件资源的等的出现,为程序和数据等软件资源的透明存取提供了物质基础,这导致了对软件资源透明存取提供了物质基础,这导致了对软件资源管理质的飞跃管理质的飞跃文件系统文件系统的出现。的出现。几个误区几个误区n首先,需要澄清对于文件系统的一些错误理首先,需要澄清对于文件系统的一些错误理解:解:n经常有这样的说法,经常有这样的说法,“我的硬盘是我的硬盘是FAT32格格式的式的”,“C盘是盘是NTFS格式格式”等,它们的等
2、,它们的错误在于,错误在于,NTFS或是或是FAT32并不是并不是硬盘格硬盘格式式,而是,而是管理文件的系统格式管理文件的系统格式n其次刚买回来的硬盘并没有文件系统,必须其次刚买回来的硬盘并没有文件系统,必须使用使用FDISK或或Windows2000/XP的分区工的分区工具等对其进行分区并具等对其进行分区并格式化格式化后才会有管理后才会有管理文件的系统,因此文件的系统,因此文件系统是对应分区的,文件系统是对应分区的,而不是硬盘而不是硬盘,不管是将硬盘分成一个分区,不管是将硬盘分成一个分区,还是几个分区。还是几个分区。什么是文件系统?什么是文件系统?n举个通俗的比喻,一块硬盘就像一个块空地,文
3、举个通俗的比喻,一块硬盘就像一个块空地,文件就像不同的材料,我们首先得根据自己的目的件就像不同的材料,我们首先得根据自己的目的在空地上建起不同的仓库(在空地上建起不同的仓库(分区分区)n并且指定好并且指定好(格式化)(格式化)每个仓库对材料的管理规每个仓库对材料的管理规范(范(文件系统文件系统),这样才能将材料运进仓库保管。),这样才能将材料运进仓库保管。n所以一个磁盘可以有多个逻辑分区,也就可以对所以一个磁盘可以有多个逻辑分区,也就可以对应多个文件系统。应多个文件系统。什么是文件系统?什么是文件系统?n文件本身不会受所在分区的文件系统影响文件本身不会受所在分区的文件系统影响,就像,就像同样是
4、汽车轮胎在同样是汽车轮胎在A仓库可能直接堆在地上,而仓库可能直接堆在地上,而B仓库则会挂在墙上,仅仅是仓库则会挂在墙上,仅仅是放置和管理方法放置和管理方法不同不同而已而已n因此,在因此,在NTFS分区和分区和FAT32分区的文件可以随意分区的文件可以随意在分区间移动,内容不会因此产生任何不同。在分区间移动,内容不会因此产生任何不同。什么是文件系统什么是文件系统n操作系统中与管理文件有关的软件和数据称为文操作系统中与管理文件有关的软件和数据称为文件系统件系统。n它负责为用户建立文件,撤消、读写、修改和复它负责为用户建立文件,撤消、读写、修改和复制文件,还负责完成对文件的按名存取和进行存制文件,还
5、负责完成对文件的按名存取和进行存取控制。取控制。Widows的主流文件系统的主流文件系统nFAT(Table)是是“文件分配表文件分配表”的意的意思。对我们来思。对我们来说,它的意义在于对硬盘分区的管理。说,它的意义在于对硬盘分区的管理。nFAT16、FAT32、NTFS是目前最常见的三种文件是目前最常见的三种文件系统。系统。Widows的主流文件系统的主流文件系统nFAT16:我们以前用的我们以前用的DOS、Windows95都使都使用用FAT16文件系统文件系统n现在常用的现在常用的Windows98/2000/XP等系统均支持等系统均支持FAT16文件系统。它最大可以管理大到文件系统。它
6、最大可以管理大到2GB的分的分区,但每个分区最多只能有区,但每个分区最多只能有65525个簇(簇是磁个簇(簇是磁盘空间的配置单位)。盘空间的配置单位)。n随着硬盘或分区容量的增大,每个簇所占的空间随着硬盘或分区容量的增大,每个簇所占的空间将越来越大,从而导致硬盘空间的浪费。将越来越大,从而导致硬盘空间的浪费。Widows的主流文件系统的主流文件系统nNTFS(英文全称为(英文全称为“NT):微软微软WindowsNT内核的系列操作系统支持的、一个特别为网络和内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘磁盘配额、文件加密等管理安全特性设计的磁盘格式。格式。
7、n随着以随着以NT为内核的为内核的Windows2000/XP的普及,的普及,很多个人用户开始用到了很多个人用户开始用到了NTFS。nNTFS也是以簇为单位来存储数据文件,但也是以簇为单位来存储数据文件,但NTFS中簇的大小并不依赖于磁盘或分区的大小。中簇的大小并不依赖于磁盘或分区的大小。n簇尺寸的缩小不但降低了磁盘空间的浪费,还减簇尺寸的缩小不但降低了磁盘空间的浪费,还减少了产生磁盘碎片的可能。少了产生磁盘碎片的可能。NTFS支持文件加密管支持文件加密管理功能,可为用户提供更理功能,可为用户提供更高层次的安全保证。高层次的安全保证。Widows的主流文件系统的主流文件系统n只有只有Windo
8、wsNT/2000/XP才能识别才能识别NTFS系统,系统,Windows9x/Me以及以及DOS等操作系统都不能支持、识别等操作系统都不能支持、识别NTFS格式的磁盘。格式的磁盘。n由于由于DOS系统不支持系统不支持NTFS系统,所以最好不要将系统,所以最好不要将C:盘制盘制作为作为NTFS系统,这样在系统崩溃后便于在系统,这样在系统崩溃后便于在DOS系统下修系统下修复。复。n而且这种情况下,如果不知道而且这种情况下,如果不知道C盘是盘是NTFS格式,在格式,在DOS下进行对下进行对C盘格式化操作,那么盘格式化操作,那么格式化的不是格式化的不是C盘而是盘而是D盘!盘!。Linux的操作系统的
9、主流文件系统的操作系统的主流文件系统nlinux操作系统的磁盘分区格式与其他操作系统完全不同,操作系统的磁盘分区格式与其他操作系统完全不同,至少需要两个专门的分区:至少需要两个专门的分区:n一种是一种是linuxnative主分区主分区n一种是一种是linuxswap交换分区。这两种分区格式的安全性与交换分区。这两种分区格式的安全性与稳定性极佳,结合稳定性极佳,结合linux操作系统后,操作系统后,死机的机会大大减死机的机会大大减少少。n但是,目前支持这一分区格式的操作系统只有但是,目前支持这一分区格式的操作系统只有linuxLinux的操作系统的主流文件系统的操作系统的主流文件系统n还可以创
10、建哪些分区(仅列常用几种)。还可以创建哪些分区(仅列常用几种)。/boot分区分区,它包含了操作系统的内核和在启动系统过程,它包含了操作系统的内核和在启动系统过程中所要用到的文件,建这个分区是有必要的。这个分区的中所要用到的文件,建这个分区是有必要的。这个分区的大小约在大小约在50MB100MB之间。之间。n/usr分区分区,是,是RedHatLinux系统存放软件的地方,如有系统存放软件的地方,如有可能应将最大空间分给它。可能应将最大空间分给它。/home分区分区,是用户的,是用户的home目录所在地,这个分区的大目录所在地,这个分区的大小取决于有多少用户。小取决于有多少用户。Linux的操
11、作系统的主流文件系统的操作系统的主流文件系统n/var/log分区分区,是系统日志记录分区,如果设立了这一单独的分区,这样即使,是系统日志记录分区,如果设立了这一单独的分区,这样即使系统的日志文件出现了问题,它们也不会影响到操作系统的主分区。系统的日志文件出现了问题,它们也不会影响到操作系统的主分区。n/tmp分区分区,用来存放临时文件。这对于多用户系统或者网络服务器来说是有,用来存放临时文件。这对于多用户系统或者网络服务器来说是有必要的。这样即使程序运行时生成大量的临时文件,或者用户对系统进行了必要的。这样即使程序运行时生成大量的临时文件,或者用户对系统进行了错误的操作,文件系统的其它部分仍
12、然是安全的。因为文件系统的这一部分错误的操作,文件系统的其它部分仍然是安全的。因为文件系统的这一部分仍然还承受着读写操作,所以它通常会比其它的部分更快地发生问题。仍然还承受着读写操作,所以它通常会比其它的部分更快地发生问题。n/bin分区分区,存放标准系统实用程序。,存放标准系统实用程序。n/dev分区分区,存放设备文件。,存放设备文件。n/opt分区分区,存放可选的安装的软件。,存放可选的安装的软件。n/sbin分区分区,存放标准系统管理文件。,存放标准系统管理文件。上面介绍了几个常用的分区,一般来说我们需要一个上面介绍了几个常用的分区,一般来说我们需要一个SWAP分区,一个分区,一个/bo
13、ot分区,一个分区,一个/usr分区,一个分区,一个/home分区,一个分区,一个/var/log分区。当然这没有什么分区。当然这没有什么规定,完全是依照你个人来定的。规定,完全是依照你个人来定的。LinuxLinux支持的文件系统支持的文件系统LinuxLinux采用采用虚拟文件系统技术虚拟文件系统技术,可支持多,可支持多种常见的文件系统,并允许用户在不同的磁种常见的文件系统,并允许用户在不同的磁盘分区上安装不同的文件系统。盘分区上安装不同的文件系统。LinuxLinux支持的文件系统类型主要有:支持的文件系统类型主要有:msdosmsdos:MS-DOSMS-DOS采用的采用的FATFAT
14、文件系统文件系统nVfatVfat:WindowsWindows中通用的文件系统中通用的文件系统nsysVsysV:UNIXUNIX中最常用的中最常用的system Vsystem V文件系统文件系统nnfsnfs:网络文件系统:网络文件系统niso9660iso9660:CD-ROMCD-ROM的标准文件系统的标准文件系统extnext是第一个专门为开发的是第一个专门为开发的Linux的文件系统类型,的文件系统类型,叫做扩展文件系统。叫做扩展文件系统。n它是它是1992年年4月完成的,对月完成的,对Linux早期的发展产生早期的发展产生了重要作用。但是,由于其在稳定性、速度和兼了重要作用。但
15、是,由于其在稳定性、速度和兼容性上存在许多缺陷,现在已经很少使用了。容性上存在许多缺陷,现在已经很少使用了。ext2next2是为解决是为解决ext文件系统的缺陷而设计的可扩展的、高文件系统的缺陷而设计的可扩展的、高性能的文件系统,它又被称为二级扩展文件系统。性能的文件系统,它又被称为二级扩展文件系统。next2是是1993年发布的,设计者是年发布的,设计者是ReyCard。next2可以支持可以支持256字节的长文件名字节的长文件名,其单一文件大小和文,其单一文件大小和文件系统本身的容量上限与文件系统本身的簇大小有关。件系统本身的容量上限与文件系统本身的簇大小有关。n2000年以前几乎所有的
16、年以前几乎所有的Linux发行版都使用发行版都使用ext2作为默认作为默认的文件系统。的文件系统。ext3next3被设计成是被设计成是ext2的升级版本,尽可能方便用户从的升级版本,尽可能方便用户从ext2向向ext3迁移。迁移。n和和ext2相比,相比,ext3提供了更佳的安全性,这就是数据日志提供了更佳的安全性,这就是数据日志和元数据日志之间的不同。和元数据日志之间的不同。next3是一种日志式文件系统,日志式文件系统的优越性在是一种日志式文件系统,日志式文件系统的优越性在于由于文件系统都有于由于文件系统都有快取层快取层参与运作,如不使用时必须将参与运作,如不使用时必须将文件系统卸下,以
17、便将文件系统卸下,以便将快取层快取层的资料写回磁盘中。的资料写回磁盘中。ReiserFSnReiserFS的第一次公开亮相是在的第一次公开亮相是在1997年年7月月23日,日,HansReiser把他的基于平衡树结把他的基于平衡树结构的构的ReiserFS文件系统在网上公布。文件系统在网上公布。nReiserFS被看作是一个更加激进和现代的被看作是一个更加激进和现代的文件系统。文件系统。Linux支持多种文件系统支持多种文件系统nLinux支持多种文件系统,如支持多种文件系统,如ext、ext2、minix、iso9660、msdos、fat、vfat、nfs等。等。n在这些具体文件系统的上层
18、,在这些具体文件系统的上层,Linux提供了虚拟文提供了虚拟文件系统(件系统(VFS)来统一它们的行为,)来统一它们的行为,虚拟文件系虚拟文件系统为不同的文件系统与内核的通信提供了一致的统为不同的文件系统与内核的通信提供了一致的接口接口。n下图给出了下图给出了Linux中文件系统的关系:中文件系统的关系:27C语言对文件的操作语言对文件的操作-概述概述n在程序运行时,在程序运行时,程序本身和数据一般都存放在内程序本身和数据一般都存放在内存中存中。当程序运行结束后,存放在内存中的数据。当程序运行结束后,存放在内存中的数据被释放。被释放。n如果需要长期保存程序运行所需的原始数据,或如果需要长期保存
19、程序运行所需的原始数据,或程序运行产生的结果,程序运行产生的结果,就必须以文件形式存储到就必须以文件形式存储到外部存储介质上。外部存储介质上。n这就涉及到文件的操作这就涉及到文件的操作Linux中文件系统的关系中文件系统的关系29两类函数两类函数n在在Linux平台下对文件编程可以使用两类函数:平台下对文件编程可以使用两类函数:n(1)Linux操作系统文件操作系统文件API;n(2)C语言语言I/O库函数。库函数。n前者依赖于前者依赖于Linux系统调用系统调用n后者实际上与操作系统是独立的,因为在任何操后者实际上与操作系统是独立的,因为在任何操作系统下,使用作系统下,使用C语言语言I/O库
20、函数操作文件的方法库函数操作文件的方法都是相同的。都是相同的。n本章将对这两种方法进行实例讲解。本章将对这两种方法进行实例讲解。30Linux的文件描述符和流的文件描述符和流n流流是标准是标准C语言语言I/O库提出来的概念,隐藏了文件库提出来的概念,隐藏了文件描述符,以更抽象的概念代替。描述符,以更抽象的概念代替。n用标准用标准I/O库函数打开或创建文件时,返回一个库函数打开或创建文件时,返回一个FILE结构的指针,该结构包含了文件描述符、缓结构的指针,该结构包含了文件描述符、缓冲区地址、缓冲区大小等信息。冲区地址、缓冲区大小等信息。n有有3个预定义的流于个预定义的流于3个预定义的文件描述符对
21、应:个预定义的文件描述符对应:stdin,stdout,stderr,要使用这,要使用这3个流必须包个流必须包含头文件含头文件322.Linux文件文件APInLinux的文件操作的文件操作API涉及到创建、打开、读写和涉及到创建、打开、读写和关闭文件关闭文件n2.1创建创建nintcreat(constchar*,mode_tmode);n参数参数mode指定新建文件的存取权限,它同指定新建文件的存取权限,它同umask一起决定文件的最终权限一起决定文件的最终权限(mode&umask),其中),其中umask代表了文件在代表了文件在创建时需要去掉的一些存取权限。创建时需要去掉的一些存取权限
22、。33系统调用系统调用umask()numask可通过系统调用可通过系统调用umask()来改变:来改变:nintumask(intnewmask);n该调用将该调用将umask设置为设置为newmask,然后返回,然后返回旧的旧的umask,它只影响读、写和执行权限。,它只影响读、写和执行权限。342.2打开文件打开文件nintopen(constchar*pathname,intflags);nintopen(constchar*pathname,intflags,mode_tmode);nopen函数有两个形式,其中函数有两个形式,其中pathname是我们要是我们要打开的文件名打开的文
23、件名(包含路径名称,缺省是认为在当前包含路径名称,缺省是认为在当前路径下面路径下面),flags可以去下面的一个值或者是几个可以去下面的一个值或者是几个值的组合:值的组合:35flags36n如果使用了如果使用了O_CREATE标志,则使用的函数是标志,则使用的函数是nintopen(constchar*pathname,intflags,mode_tmode);n这个时候我们还要指定这个时候我们还要指定mode标志,用来表示文件标志,用来表示文件的访问权限。的访问权限。nmode可以是以下情况的组合:可以是以下情况的组合:37mode38Mode的标志位的标志位n除了可以通过上述宏进行除了可
24、以通过上述宏进行“或或”逻辑产生标志以逻辑产生标志以外,外,n也可以自己用数字来表示:也可以自己用数字来表示:nLinux总共用总共用5个数字来表示文件的各种权限:第个数字来表示文件的各种权限:第一位表示设置用户一位表示设置用户ID;第二位表示设置组;第二位表示设置组ID;第;第三位表示用户自己的权限位;第四位表示组的权三位表示用户自己的权限位;第四位表示组的权限;最后一位表示其他人的权限。限;最后一位表示其他人的权限。3912345用户用户ID组组ID用户权限用户权限组的权限组的权限他人权限他人权限Mode的标志位的标志位n每个数字可以取每个数字可以取1(执行权限执行权限)、2(写权限写权限
25、)、4(读权限读权限)、0(无无)或者是这些值的和。例如,要创建一个用户可读、可或者是这些值的和。例如,要创建一个用户可读、可写、可执行,但是组没有权限,其他人可以读、可以执行写、可执行,但是组没有权限,其他人可以读、可以执行的文件,并设置用户的文件,并设置用户ID位。位。n那么,应该使用的模式是那么,应该使用的模式是1(设置用户设置用户ID)、0(不设置组不设置组ID)、7(1+2+4,读、写、执行,读、写、执行)、0(没有权限没有权限)、5(1+4,读、执,读、执行行)即即10705:4012345用户用户ID组组ID用户权限用户权限组的权限组的权限他人权限他人权限0、10、10无无1读读
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件 操作 课件
限制150内