文件操作
2016-07-15 14:25
465 查看
----- 用户通过文件系统所提供的系统调用实施对文件的操作。
----- 最基本的文件操作有:创建文件、删除文件、读文件、写文件、截断文件和设置文件的读/写位置。
但对于一个实际的OS,为了方便用户使用文件而提供了更多的对文件的操作,如打开和关闭一个文件及改变文件名等操作。
1、最基本的文件操作
-- 1)创建文件。
在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项。
目录项中应记录新文件的文件名及其在外存的地址等属性。
-- 2)删除文件。当已不再需要某文件时,可将它从文件系统中删除。
在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。
-- 3)读文件。在读一个文件时,需在相应系统调用中给出文件名和应读入的内存目标地址。
此时,系统同样要查找目录,找到指定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。
-- 4)写文件。在写一个文件时,需在相应系统调用中给出该文件名及该文件在内存中的(源)地址。
为此,也同样需先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写操作。
-- 5)截断文件。如果一个文件的内容已经陈旧而需要全部更新时,一种方法是将此文件删除,再重新创建一个新文件。
但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,即将原有文件的长度置为0。(放弃原有的文件内容)
-- 6)设置文件的读/写位置。
未设置时,只提供对文件顺序存取的手段,即每次都是从文件的始端读或写。
设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。
也正因如此,才能改顺序存取为随机存取。
2、文件的“打开”和“关闭”操作
当前OS所提供的大多数对文件的操作,其过程大致分为两步:
第一步:通过检索文件目录来找到指定文件的属性及其在外存上的位置。
第二步:对文件实施相应的操作,如读文件或写文件等。
当用户要求对一个文件实施多次读/写或其它操作时,每次都要从检索目录开始。为了避免多次重复地检索目录,在大多数OS中都引入了
“打开”(open)这一文件系统调用,当用户第一次请求对某文件进行操作时,先利用open系统调用将该文件打开。
所谓“打开”,是指系统将指明文件的属性(包括该文件在外存上的物理地址)从外存拷贝到内存打开文件表的一个表目中,并将该表目的
编号(或称为索引)返回给用户。以后,当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。
系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索开销,也显著的
提高了对文件的操作速度。如果用户已不再需要对该文件实施相应的操作时,可利用“关闭”(close)系统调用来关闭此文件,OS将会把
文件从打开文件表中的表目上删除掉。
3、其它文件操作
---- 为了方便用户使用文件,通常,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类。
最常用的一类是:有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性,如改变已有文件的文件名、改变文件的拥有者
(文件主),改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等)。
另一类是有关目录的。如创建一个目录,删除一个目录,改变当前目录和工作目录等;此外,还有用于实现文件共享的系统调用和用于对
文件系统进行操作的系统调用等。
----- 最基本的文件操作有:创建文件、删除文件、读文件、写文件、截断文件和设置文件的读/写位置。
但对于一个实际的OS,为了方便用户使用文件而提供了更多的对文件的操作,如打开和关闭一个文件及改变文件名等操作。
1、最基本的文件操作
-- 1)创建文件。
在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项。
目录项中应记录新文件的文件名及其在外存的地址等属性。
-- 2)删除文件。当已不再需要某文件时,可将它从文件系统中删除。
在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。
-- 3)读文件。在读一个文件时,需在相应系统调用中给出文件名和应读入的内存目标地址。
此时,系统同样要查找目录,找到指定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。
-- 4)写文件。在写一个文件时,需在相应系统调用中给出该文件名及该文件在内存中的(源)地址。
为此,也同样需先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写操作。
-- 5)截断文件。如果一个文件的内容已经陈旧而需要全部更新时,一种方法是将此文件删除,再重新创建一个新文件。
但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,即将原有文件的长度置为0。(放弃原有的文件内容)
-- 6)设置文件的读/写位置。
未设置时,只提供对文件顺序存取的手段,即每次都是从文件的始端读或写。
设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。
也正因如此,才能改顺序存取为随机存取。
2、文件的“打开”和“关闭”操作
当前OS所提供的大多数对文件的操作,其过程大致分为两步:
第一步:通过检索文件目录来找到指定文件的属性及其在外存上的位置。
第二步:对文件实施相应的操作,如读文件或写文件等。
当用户要求对一个文件实施多次读/写或其它操作时,每次都要从检索目录开始。为了避免多次重复地检索目录,在大多数OS中都引入了
“打开”(open)这一文件系统调用,当用户第一次请求对某文件进行操作时,先利用open系统调用将该文件打开。
所谓“打开”,是指系统将指明文件的属性(包括该文件在外存上的物理地址)从外存拷贝到内存打开文件表的一个表目中,并将该表目的
编号(或称为索引)返回给用户。以后,当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。
系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索开销,也显著的
提高了对文件的操作速度。如果用户已不再需要对该文件实施相应的操作时,可利用“关闭”(close)系统调用来关闭此文件,OS将会把
文件从打开文件表中的表目上删除掉。
3、其它文件操作
---- 为了方便用户使用文件,通常,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类。
最常用的一类是:有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性,如改变已有文件的文件名、改变文件的拥有者
(文件主),改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等)。
另一类是有关目录的。如创建一个目录,删除一个目录,改变当前目录和工作目录等;此外,还有用于实现文件共享的系统调用和用于对
文件系统进行操作的系统调用等。
相关文章推荐
- 【转】【C#】ColorMatrix
- 一种新的隐藏-显示模式诞生——css3的scale(0)到scale(1)
- 线程池的作用
- Flume+Hadoop+Hive的离线分析系统基本架构
- Android ANR和Crash问题小结--分析log
- Linux内核 TCP/IP、Socket参数调优
- hdu3605(网络流+状态压缩)
- php安装imagick扩展
- HDU1728(经典广搜)逃离迷宫
- 关于视频流的各种问题,后续整理
- java的各种排序算法的分析及实现
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
- 一些项目感悟
- supervisor
- ndk-stack使用方法
- Linux学习_1(shell)
- sersync+rsync多实例网站数据同步
- Exchange Server 2010 全新部署篇三:新建第一台证书服务器PEK1-CER-01
- sun.misc.unsafe类的使用
- 开始我的Python之旅(三)