我们现在所能实现的,其实与我们编写的C++没有任何区别,甚至说比较的low,我们学习这些基础的语言及语法,实际是要实现我们的交互式工作,以及我们的实际的作用
输入输出是指程序与外部设备或其它计算机进行交互的操作,几乎所有程序都具有输入与输出操作,而Java将这些输入输出操作用流来实现,用统一的接口来表示,使程序设计简单明了
流
流(Stream)–计算机个部件之间的数据流动,按数据流的方向分为输入流和输出流,内容上可划分为字节流和字符流,而其中的数据既可以是二进制,也可使经过编码处理的符合某种格式规定的特定数据
即流是由位组合或字符所构成的序列,如字符流序列,数字流序列等
用户通过流来读写数据,甚至通过流来连接数据源,并可以将数据以字符或位组合的形式保存
- 输入输出流
数据的获取和发送都是沿着数据序列的顺序进行,每个数据都必须等待排在它前面的数据读入或送出之后才能被读写,每次读写操作都是序列中剩余的未读写数据的第一个,而不能随意选择输入输出位置 - 缓冲流
为一个流配有一个缓冲区,专门用来传送哦数据的一块内存
向一个缓冲流写入数据时,系统将数据发送到缓冲区,而不是直接发送到外部设备
从一个缓冲流中读取设备时,实际是从缓冲区读取,缓冲区为为空时,系统会从相关外部设备自动读取数据,并读取尽可能多的数据填满缓冲区
即缓冲流提高了内存与外部设备之间的数据传输效率
这里就不详细描写我们的输入输出流库了,在网上都可以百度到
文件处理与随机访问
由于程序运行时,数据保存在系统的内存中,关机时会导致所有数据丢失,故将那些需要长期保存的数据存放在磁盘中,需要时再读出
- 创建File类的对象
由于每个File类都对应系统的一个磁盘文件或文件夹,所以创建时需要给出它对应的文件名或文件夹名
构造方法如下
构造方法 | 功能说明 |
---|---|
public File(String path) | 用path参数创建File对象对应的磁盘文件名或文件夹名及其路径 |
public File(String path, String name) | 以path为路径,以name为文件或文件夹名创建FIle对象 |
public File(String dir, String name) | 用一个已经存在代表某磁盘文件夹的FIle对象dir来作为文件夹,以name作为文件或文件夹名来创建FIle对象 |
注意:
- path参数可以为绝对路径,也可为相对路径,还可为磁盘上的某个文件夹
- 由于不同的操作系统其使用的文件夹分隔符不同,为了使其可以在不同平台上运行,可利用File类中的一个静态变量FIle.separator
e.g.
"d: " + File.separator + "java" + File.separator + "myfile"
- 获取文件或文件夹的属性
一个FIle对象一经创建,就可以通过调用它的方法来获得其对应的文件或文件夹的属性,常用方法如下
方法 | 功能说明 |
---|---|
public boolean exists() | 判断文件或文件夹是否存在 |
public boolean isFile() | 判断对象是否代表有效文件 |
public boolean isDirectory() | 判断对象是否代表有效文件夹 |
public String getName() | 返回文件名或文件夹名 |
public String getPath() | 返回文件或文件夹路径 |
public long length() | 返回文件的字节数 |
public boolean canRead() | 判断文件是否可读 |
public boolean canWrite() | 判断文件是否可写 |
public String[] list() | 将文件夹中所有文件名保存在字符串数组中返回 |
public boolean equals(File f) | 比较两个文件或文件夹是否相同 |
- 文件或文件夹的操作
即一些管理,操作方法
方法 | 功能说明 |
---|---|
public boolean renameTo(File newFile) | 将文件重命名为newFile对应的文件名 |
public boolean delete() | 将当前文件删除,若删除成功返回True,否则返回False |
public boolean mkdir() | 创建当前文件夹的子文件夹,成功返回True,否则返回False |
- 文件随机访问
随机访问类RandomAccessFile,可实现对文件的随机读写
其构造以及读取写入操作与我们的前面的类似,就不重复阐述,等到要用到直接百度即可