《Java的输入/输出》学习笔记


======================================================
注:本文源代码点此下载
======================================================

《java的输入、输出》学习笔记

一、file类

file类能创建、删除和重命名文件和目录,但是不能访问文件的内容本身。

file类可以使用文件路径字符串来创建file实例,该文件路径可以是绝对路径也可以是相对路径。

如果在windows中路径下包括反斜线,应该用两条反斜线,如:f:\\abc\\test.txt 或者使用斜线也可以。

二、io流

java的io流是实现输入/输出的基础,它可以方便的实现数据的输入和输出操作。

1、流的分类:

输入流:读取数据

输出流:写出数据

字节流:以inputstream和outputstream作为基类

字符流:以reader和writer作为基类

节点流(低级流):从/向一个特定的io设备(如磁盘、网络)读/写数据的流。直接连接数据源,和实际的输入/输出节点连接。

处理流(高级流):用于对一个已存在的流进行连接或封装,通过封装后来实现数据读/写功能。

2、流的概念模型

java的io流的40多个类都是从4个抽象类派生出来的:

inputstream/reader:所有输入流的基类

outputstream/writer:所有输出流的基类

由于以上4个类都是抽象类,不能创建实例。

fileinputstream和filereader读取文件的输入流。

fileoutputstream和filewriter写出文件的输出流。

3、输入/输出流体系

①处理流的用法

使用处理流的典型思路:使用处理流来包装节点流,并对外提供更加方便的输入/输出方法,让程序员只关心高级流的操作。

识别处理流:只要流的构造参数不是一个物理节点,而是已经存在的流,那么这个流就是处理流;

而节点流都是以物理io节点作为构造参数的。

注意:

当我们使用处理流来包装节点流之后,关闭输入/输出流资源时,只要关闭最上层的处理流即可。关闭最上层的处理流时,系统会自动关闭该处理流包装的节点流。

②输入/输出流体系

分类

字节输入流

字节输出流

字符输入流

字符输出流

抽象基类

inputstream

outputstream

reader

writer

访问文件

fileinputstream

fileoutputstream

filereader

filewriter

访问数组

bytearrayinputstream

bytearrayoutputstream

chararrayreader

chararraywriter

访问管道

pipedinputstream

pipedoutputstream

pipedreader

pipedwriter

访问字符串

stringreader

stringwriter

缓冲流

bufferedinputstream

bufferedoutputstream

bufferedreader

bufferedwriter

转换流

inputstreamreader

outputstreamwriter

对象流

objectinputstream

objectoutputstream

抽象基类

filterinputstream

filteroutputstream

filterreader

filewriter

打印流

printstream

推回输入流

pushbackinputstream

pushbackreader

特殊流

datainputstream

dataoutputstream

注:斜体字标出的类代表抽象类,无法直接创建实例。以上流都位于java.io包下。

如果需要进行输入/输出的内容是文本内容,则应该考虑使用字符流,如果需要进行输入/输出的内容是二进制内容,则应该考虑使用字节流。

③转换流

用于实现将字节流转换成字符流:

inputstreamreader:将字节输入流转换成字符输入流

outputstreamwriter:将字节输出流转换成字符输出流

bufferedreader流具有一个缓冲功能,它可以一次读取一行文本,以换行符为标志。由于bufferedreader具有一个readline ()方法。可以很方便的一次读入一行内容,所以经常把读取文本内容的输入流包装成bufferedreader,用以方便的读取输入流的文本内容。

三、randomaccessfile

randomaccessfile是java输入/输出流体系中功能最丰富的文件内容访问类,它提供了众多方法来访问文件内容,它既可以读取文件内容,又可以向文件输出数据。与普通输入/输出流不同的是,randomaccessfile支持“随机访问”的方式,程序可直接跳转到文件的任意地方来读写数据。

因为randomaccessfile可以自由访问文件的任意位置,所以如果我们希望只访问文件的部分内容,而不是把文件从头读到尾,使用randomaccessfile将是更好的选择。

如果需要向已存在的文件后追加内容,则应该使用randomaccessfile

randomaccessfile依然不能向文件的指定位置插入内容,如果直接将文件记录指针移动到中间某位置后开始输出,则新输入的内容会覆盖文件中原有的内容。如果需要向指定位置插入内容,程序需要把插入点后面的内容读入缓冲区,等把需要插入的数据写入文件后,再将缓冲区的内容追加到文件后面。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值