文件操作-程序员宅基地

技术标签: 操作系统  

----- 用户通过文件系统所提供的系统调用实施对文件的操作。

----- 最基本的文件操作有:创建文件、删除文件、读文件、写文件、截断文件设置文件的读/写位置。

但对于一个实际的OS,为了方便用户使用文件而提供了更多的对文件的操作,如打开和关闭一个文件及改变文件名等操作。

1、最基本的文件操作

-- 1)创建文件。

在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项

目录项中应记录新文件的文件名及其在外存的地址等属性。

-- 2)删除文件。当已不再需要某文件时,可将它从文件系统中删除。

在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。

-- 3)读文件。在读一个文件时,需在相应系统调用中给出文件名和应读入的内存目标地址

此时,系统同样要查找目录,找到指定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。

-- 4)写文件。在写一个文件时,需在相应系统调用中给出该文件名及该文件在内存中的(源)地址。

为此,也同样需先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写操作。

-- 5)截断文件。如果一个文件的内容已经陈旧而需要全部更新时,一种方法是将此文件删除,再重新创建一个新文件。

但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,即将原有文件的长度置为0。(放弃原有的文件内容)

-- 6)设置文件的读/写位置。

未设置时,只提供对文件顺序存取的手段,即每次都是从文件的始端读或写。

设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。

也正因如此,才能改顺序存取为随机存取

2、文件的“打开”和“关闭”操作

当前OS所提供的大多数对文件的操作,其过程大致分为两步:

第一步:通过检索文件目录来找到指定文件的属性及其在外存上的位置

第二步:对文件实施相应的操作,如读文件或写文件等。

当用户要求对一个文件实施多次读/写或其它操作时,每次都要从检索目录开始。为了避免多次重复地检索目录,在大多数OS中都引入了

“打开”(open)这一文件系统调用,当用户第一次请求对某文件进行操作时,先利用open系统调用将该文件打开。

所谓“打开”,是指系统将指明文件的属性(包括该文件在外存上的物理地址)从外存拷贝到内存打开文件表的一个表目中,并将该表目的

编号(或称为索引)返回给用户。以后,当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。

系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索开销,也显著的

提高了对文件的操作速度。如果用户已不再需要对该文件实施相应的操作时,可利用“关闭”(close)系统调用来关闭此文件,OS将会把

文件从打开文件表中的表目上删除掉。

3、其它文件操作

---- 为了方便用户使用文件,通常,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类。

最常用的一类是:有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性,如改变已有文件的文件名、改变文件的拥有者

(文件主),改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等)。

另一类是有关目录的。如创建一个目录,删除一个目录,改变当前目录和工作目录等;此外,还有用于实现文件共享的系统调用和用于对

文件系统进行操作的系统调用等。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dongyanxia1000/article/details/51917161

智能推荐

数据分析师的就业趋势及发展前景怎么样_数据分析师就业现状-程序员宅基地

文章浏览阅读1.8k次。数据分析师的就业趋势及发展前景怎么样?根据第三方数据显示,数据分析师的需求量将增长幅度大。即使你不是数据分析师,掌握数据分析技能也是未来必不可少的工作技能之一。国内某大型招聘平台调研数据分析师平均薪酬为9724K左右。_数据分析师就业现状

appium设置会话时间,可以超长时。Open Application-程序员宅基地

文章浏览阅读1.2k次。转载于:https://www.cnblogs.com/1234abcdttttjy001/p/10650408.html_appium 连接超时的时间设置

最新版Flink CDC MySQL同步Elasticsearch(一)_the mysql server has a timezone offset (28800 seco-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏9次。(需要自行进行构建编译,笔者构建的已经上次至次博客。需要可以进行下载,csdn需要积分下载,无法设置免费的,需要免费版可以直接联系笔者)首先我们要基于Flink CDC MySQL同步MySQL的环境基础上(flink-1.17.1、Java8、MySQL8)搭建。,笔者的Flink CDC MySQL同步Elasticsearch第一篇讲解完毕,希望能帮助到搭建。笔者已经搭建好环境,这里不做具体演示了,如果需要Es的搭建教程情况笔者其他博客。:这是笔者遇到的问题,具体问题具体解决即可。_the mysql server has a timezone offset (28800 seconds ahead of utc) which do

Spring Cloud中间件_springcloud中间件-程序员宅基地

文章浏览阅读1k次。spring cloud 中间件_springcloud中间件

vxe-table实现增加行(push)滚动条到对应行_vxe-table 滚动到某一行-程序员宅基地

文章浏览阅读3.3k次。自己试了vxe-table的官方文档方法,没有成功。最后使用了原生的方法scrollTo()实现了,加入计时器效果更明显 setTimeout(() => { document .getElementsByClassName("vxe-table--body-wrapper")[0] .scrollTo(0, this.$refs.xTable2.tableHeight); }, 500);..._vxe-table 滚动到某一行

Android 程序反编译_@ref/0x7f070000是什么意思-程序员宅基地

文章浏览阅读426次。Apk文件的格式Android application package文件。每个要安装到android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。apk文件实际是一个zip压缩包,可以通过解压缩工具解开。可以用zip解开*.apk文件,下面是一个helloword的apk示例文件。|– AndroidManifest.xml |– ME..._@ref/0x7f070000是什么意思

随便推点

打造黑苹果(二)制作黑mac系统安装U盘-程序员宅基地

文章浏览阅读5.7w次,点赞7次,收藏41次。打造黑苹果(二)制作黑mac系统安装U盘前言在上一篇打造黑苹果(一)组装硬件的选择与组装 中,我们已经给大家在硬件上有了一个建议。如果你已经购买了硬件了,或者你原来的硬件就已经满足了黑MAC的需求,那么,下面就要开始安装黑MAC系统了。如果你不愿意折腾,建议在仓库盘上先安装一个windows的操作系统,然后上淘宝,找一个黑MAC系统安装的店家,花上百十块钱,就可以安装好了,省的自己研究。 在仓库_黑mac

CPU的亲和性_cpu亲和性-程序员宅基地

文章浏览阅读478次。CPU领域中最广为人知的一条定律——摩尔定律:预计18个月会将芯片的性能提高一倍。过去几十年,各大公司致力于提高CPU晶体管密度和提高CPU工作频率,使得CPU的性能提升基本符合摩尔定律。但随着工艺不断发展,晶体管密度提升已经接近物理极限,CPU工作频率也由于功耗和发热的制约而无法继续提升。在基础物理领域没有大的突破的前提下,单核CPU的性能提升日益困难,于是,各大公司将目光投向了通过增加CPU核心数提高性能领域,双核、4核、8核、16核等一系列多核CPU相继问世。_cpu亲和性

Vuforia 云辨认 多图教程_vuforia识别多个图片-程序员宅基地

文章浏览阅读3.2k次。一 创立云辨认库起首在应用云辨认之前我们须要拥有一个KEY 一个KEY对应一个宣布的APP 我们之前注册的基本KEY就可以应用云办事 可是每个月/每个APP用户/每张辨认图有1000次的扫描限制 所以基本的只能支撑我们测试或者极小频率的应用办事的价钱可以参看下图 接下来我们树立一个云辨认库 打开tARget治理页面点击ADD DATABASE添加一个数据库 _vuforia识别多个图片

从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南_排队找零问题-程序员宅基地

文章浏览阅读3.4k次。转自:从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南引子:  大约两个月前,我在练习一些招聘的笔试题中,有一道和卡特兰数相关。那时还没来得及开始仔细看《编程之美》,就先翻到那一章节,草草地看了下买票找零的例子和证明并把书上的背下来了事。当然,只靠这个式子是可以解决一些问题的,但不知是《编程之美》的作者有意挖的陷阱来甄别所谓的“Poser”,还是疏忽了没有进一步讨论,又或_排队找零问题

【MATLAB】信号与系统 — 周期矩形(三角形)脉冲信号_matlab周期矩形脉冲信号-程序员宅基地

文章浏览阅读4.5k次。【MATLAB】信号与系统 — 周期矩形(三角形)脉冲信号。_matlab周期矩形脉冲信号

linux下升级BMC,Linux下升级IBM3650主板bios、bmc和raid卡firmware-程序员宅基地

文章浏览阅读1.1k次。IBM3650自带的raid10卡型号是8k-l,在IBM主站下载以下程序:1 ibm_sw_srapp_9.30-17006_anyos_32-64.iso中抽取RaidMan-9.30-17006.i386.rpm2 ibm_fw_aacraid_8k-8kl-5.2.0-17003_linux_32-64.bin3 ibm_fw_bios_gge149a-1.19_linux_i386.sh..._ibm3650m4升级bios

推荐文章

热门文章

相关标签