[零] JavaIO入门简介 程序设计语言 为什么需要IO库
操作系统的文件管理
组织形式和处理方式分类
文件的操作
基本操作
(1) 创建文件。
在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项。
目录项中应记录新文件的文件名及其在外存的地址等属性。
|
(2) 删除文件。
当已不再需要某文件时,可将它从文件系统中删除。在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。
|
(3) 读文件。
在读一个文件时,须在相应系统调用中给出文件名和应读入的内存目标地址。此时,系统同样要查找目录,找到指定的目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件的读/写。
|
(4) 写文件。
在写一个文件时,须在相应系统调用中给出该文件名及该文件在内存中的(源)地址。
为此,也同样须先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写操作。
|
(5) 截断文件。
如果一个文件的内容已经陈旧而需要全部更新时,一种方法是将此文件删除,再重新创建一个新文件。
但如果文件名及其属性均无改变时,则可采取另一种所谓的截断文件的方法,此即将原有文件的长度设置为0,或者说是放弃原有的文件内容。
|
(6) 设置文件的读/写位置。
前述的文件读/写操作都只提供了对文件顺序存取的手段,即每次都是从文件的始端读或写。
设置文件读/写位置的操作,用于设置文件读/写指针的位置,以便每次读/写文件时,不是从其始端而是从所设置的位置开始操作。也正因如此,才能改顺序存取为随机存取。
|
文件的打开和关闭
当前OS所提供的大多数对文件的操作, 其过程大致都是这样两步:
第一步是通过检索文件目录来找到指定文件的属性及其在外存上的位置;
第二步是对文件实施相应的操作,如读文件或写文件等。
当用户要求对一个文件实施多次读/写或其它操作时,每次都要从检索目录开始。
为了避免多次重复地检索目录,在大多数OS中都引入了“打开”(open)这一文件系统调用
当用户第一次请求对某文件进行操作时,先利用 open系统调用将该文件打开。
所谓“打开” ,是指系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户。
以后,当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。
系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。
这样不仅节省了大量的检索开销,也显著地提高了对文件的操作速度。
如果用户已不再需要对该文件实施相应的操作时,可利用“关闭”(close)系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉。
|
程序设计中的IO

IO不仅仅是跟操作系统打交道
也就是说程序语言中的IO
不仅仅要解决温饱问题(通过操作系统读取文件)
还要解决奔小康的问题(能够对各种来源,各种数据文件 更便捷的进行操作)
|

逻辑功能使用上需要尽最大可能的照顾到开发者
|
实现上尽可能的高效 |
[零] JavaIO入门简介 程序设计语言 为什么需要IO库的更多相关文章
- 002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介
002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介 学习Java的基础语法 Java是一门编程语言,学习的逻辑其实和现实世界的语言是一样的,需要了 ...
- 005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介
005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介 Eclipse是一款集成开发工具--IDE. 集成开发环境(IDE,Integrated ...
- 零基础入门该如何实现C 语言面向对象编程(很有帮助)
零基础如果更快更好的入门C语言,如何在枯燥的学习中找到属于自己的兴趣,如果把学习当成一种事务性的那以后的学习将会很难有更深入的进步,如果带着乐趣来完成学习那将越学越有意思这样才会让你有想要更深入学习的 ...
- 大神教零基础入门如何快速高效的学习c语言开发
零基础如果更快更好的入门C语言,如何在枯燥的学习中找到属于自己的兴趣,如果把学习当成一种事务性的那以后的学习将会很难有更深入的进步,如果带着乐趣来完成学习那将越学越有意思这样才会让你有想要更深入学习的 ...
- [Java入门笔记] Java语言简介
前言 学习Java有一段时间了,但是一直缺少一个系统的思想,现在重新通过书籍中.网上的文章,视频等资料,整理与回顾Java的知识点. 言归正传,让我们先从了解Java语言开始. Java语言的由来 J ...
- Oberon程序设计语言简介
Oberon奥伯龙是一种通用编程语言,也是一种同名操作系统(由Oberon语言开发,且参考过贝尔实验室的新一代网络操作系统Plan9),是由原Pascal程序设计语言的发明者Niklaus Wirth ...
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...
- 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...
- MongoDB入门简介
MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...
随机推荐
- Android SQLite数据库升级,怎么做(事物更改)
SQLiteOpenHelper // 如果数据库文件不存在,只有onCreate()被调用(该方法在创建数据库时被调用一次) public abstract void onCreate(SQLite ...
- .NET题目(收集来自网络)
1: .NET和c#有什么区别? 答: .NET一般是指.NET FrameWork框架,是一种平台,一种技术 c#是一种编程语言,是可以基于.NET平台的应用 2: c#中的委托是什么?事件是不是一 ...
- css实用属性
background-size: 100% 100%; 背景通过拉伸实现填充 自适应 overflow: hidden; ...
- 阿里云 DTS 实践
控制台 https://dts.console.aliyun.com/#/task/basic/ 操作 填写源目标和目的数据库信息 选择需要迁移的数据库 检查通过 现在好像是免费的,计时收费也很便宜 ...
- 实验5 Spark SQL编程初级实践
今天做实验[Spark SQL 编程初级实践],虽然网上有答案,但都是用scala语言写的,于是我用java语言重写实现一下. 1 .Spark SQL 基本操作将下列 JSON 格式数据复制到 Li ...
- Oracle 查询表空间使用情况
select * from (Select a.tablespace_name, to_char(a.bytes / 1024 / 1024, '99,999.999 ...
- 深入解析Java反射-invoke方法
博客原文:http://www.sczyh30.com/posts/Java/java-reflection-2/ 上篇文章中回顾了一下Java反射相关的基础内容.这一节我们来深入研究Method类中 ...
- 【DFS】n皇后问题
回溯: 递归调用代表开启一个分支,如果希望这个分支返回后某些数据恢复到分支开启前的状态以便重新开始,就要使用到回溯技巧,全排列的交换法,数独,部分和,用到了回溯.下一个状态在开始之前需要利用到之前的状 ...
- IntelliJ Idea 2017 免费激活方法
1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...
- [Swift]LeetCode311. 稀疏矩阵相乘 $ Sparse Matrix Multiplication
Given two sparse matrices A and B, return the result of AB. You may assume that A's column number is ...