IO复习

IO流

基本:

1.File(文件操作)

2.Stream(流操作)

  2.1.InputStream(字节输入流)

  2.2.OutputStream(字节输出流)

  2.3.Reader(字符输入流)

  2.4.Writer(字符输出流)

 

File类基本介绍:

此类的实例可能表示(也可能不表示)实际文件系统对象,如文件或目录。如果它表示这种对象,那么该对象驻留在一个分区中。分区是文件系统特定于操作系统的存储分区。一个存储设备(例如,物理磁盘驱动器、闪存、CD-ROM)可以包含多个分区。对象(如果有)将驻留在此路径名(绝对形式)某个祖先指定的分区上。

文件系统可以实现对实际文件系统对象上的某些操作(比如,读、写、执行)进行限制。这些限制统称为访问权限。文件系统可以对一个对象设置多个访问权限。例如,一个设置可能适用于对象的所有者,另一个设置则可能适用于所有其他用户。对象上的访问权限可能导致此类的某些方法执行失败。

相关常用最基本方法:

canRead()--测试应用程序是否可以读取此抽象路径名表示的文件。

canWriter()--测试应用程序是否可以修改此抽象路径名表示的文件。

createNewFile()--当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

delete() --删除此抽象路径名表示的文件或目录。

exists()  --测试此抽象路径名表示的文件或目录是否存在。

getAbsolutePath() --返回此抽象路径名的绝对路径名字符串

getAbsoluteFile() --返回此抽象路径名的绝对路径名形式。

getName()  -- 返回由此抽象路径名表示的文件或目录的名称。

getParent() -- 返回此抽象路径名父目录的路径名字符串;如果此路径名没有         指定父目录,则返回 null

getPath() --将此抽象路径名转换为一个路径名字符串。

isDrectory() --测试此抽象路径名表示的文件是否是一个目录。

isFile() --测试此抽象路径名表示的文件是否是一个标准文件。

length() -- 返回由此抽象路径名表示的文件的长度。单位字节

listFiles() --返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

midir()  --创建此抽象路径名指定的目录。

mkdirs() --创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

......

更多详情,查看java api文档

 

mkdir和mkdirs的区别

mkdir只能建立一级目录

mkdirs可以建立多级目录

比如:

New File(“d:\one\two\three”).mkdir(),如果在d盘下没有d:\one\two目录,那么无法建立three目录

而New File(“d:\one\two\three”).mkdirs(),不管在d盘下有没有d:\one\two目录,他都会直接建立d:\one\two\three

 

输入输出流

来源:http://www.weixueyuan.net/view/6042.html

基本概念:

输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取 数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从 而使程序设计更为简单。

Java中流概念:

在Java中,把不同类型的输入输出源抽象为流,其中输入和输出的数据称为数据流(Data Stream)。数据流是Java程序发送和接收数据的一个通道,数据流中包括输入流(Input Stream)和输出流(Output Stream)。通常应用程序中使用输入流读出数据,输出流写入数据。 流式输入、输出的特点是数据的获取和发送均沿数据序列顺序进行。相对于程序来说,输出流是往存储介质或数据通道写入数据,而输入流是从存储介质或数据通道 中读取数据。

缓冲流

为了提高数据的传输效率,引入了缓冲流(Buffered Stream)的概念,即为一个流配备一个缓冲区(Buffer),一个缓冲区就是专门用于传送数据的一块内存
当向一个缓冲流写入数据时,系统将数据发送到缓冲区,而不是直接发送到外部设备。缓冲区自动记录数据,当缓冲区满时,系统将数据全部发送到相应的外部设 备。当从一个缓冲流中读取数据时,系统实际是从缓冲区中读取数据,当缓冲区为空时,系统就会从相关外部设备自动读取数据,并读取尽可能多的数据填满缓冲 区。 使用数据流来处理输入输出的目的是使程序的输入输出操作独立于相关设备,由于程序不需关注具体设备实现的细节(具体细节由系统处理),所以对于各种输入输 出设备,只要针对流做处理即可,不需修改源程序,从而增强了程序的可移植性。

 

流的分类

1.根据流向不同分为输入流和输出流

2.根据处理数据类型不同分为字符流和字节流

 

InputStream是所有字节输入流的抽象父类,其层次结构:

 

InputStream是所有字节输出流的抽象父类,其层次结构:

 

 

Reader是所有字符输入流的抽象父类,其层次结构:

 

 

Writer是所有字符输出流的抽象父类,其层次结构:

 

 

关于流的实际操作练习:

1.层次的展示一个目录下所有文件

2.将一个目录复制到另一个目录下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值