Java中的I/O

Java中所有的输入输出类都与四个抽象类有关,分别是:

  • InputStream字节输入流
  • OutputStream字节输出流
  • Reader字符输入流
  • Writer字符输出流

InputStream类(该类中的所有方法遇到错误时都会引发IOException异常):

  • read():从输入流中读取数据的下一个字节。返回0~255之间的int字节值。如果到达末尾,则返回-1
  • read(byte[] b):从输入流中读入一定长度的字节,并以整数形式返回字节数
  • mark(int readlimit):在输入流的当前位置放置一个标记,readlimit参数代表能够读取的最大字节数
  • reset():将输入指针返回到当前所做的标记处
  • skip(long n):跳过输入流上的n个字节并返回实际跳过的字节数
  • markSupported():如果当前流支持mark()/reset()操作就返回True
  • close方法:关闭输入流并释放与该流相关联的所有系统资源

OutputStream类(类中的所有方法均返回void,遇到错误引发IOException异常):

  • write(int b):将指定字节写入此输出流
  • write(byte[] b):将b个字节从指定的byte数组写入此输出流
  • write(byte[] b,int off,int len):将指定byte数组中从偏移量off开始的len个字节写入此输出流
  • flush():彻底完成输出并清空缓存区
  • close():关闭输出流、

 

File类:

创建文件对象:

                  File file = new File(String pathname)根据路径创建文件对象

                  File file = new FIle(String parent,String child)根据父路径和子路径(包含文件名) 创建File对象

                  File file = new FIle(File f,String child)根据parent抽象路径名和child路径名字符串创建FIle对象

创建文件:file.createNewFile();

删除文件:file.delete();

File类常用方法
方法返回值说明
getName()String获取文件的名称
canRead()boolean判断文件是否可读
canWrite()boolean判断文件是否可写
exits()boolean判断文件是否存在
length()long获取文件的长度
getAbsolutePath()String返回文件的绝对路径
getPerent()String获取文件的父路径
isFile()boolean

判断文件是否存在

isDirectory()boolean判断文件是否是一个目录
isHidden()boolean判断文件是否是隐藏文件
lastModified()long获取文件最后修改时间

文件输入/输出流FileInputStream/FileOutputStream

FileInputStream类常用的构造方法:

  • FileInputStream(String name):创建一个文件名为name的FileInputStream对象
  • FileInputStream(File file)使用File对象创建一个FIleInputStream对象,可以在文件连接输入流之前对文件作进一步操作

FIleWrite与FileReader类:按字符读取、写入数据。

BufferedInputStream与BufferedOutputStream类:对InputStream和OutputStream进行带缓存区的包装

BufferedInputStream:

  • BufferedInputStream(InputStream in)创建一个带32字节的缓存流
  • BufferedInputStream(InputStream in,int size)按照指定大小创建缓存区

BufferedOutputStream:(有一个flush()方法来将缓存区的所有数据强制输出完

  • BufferedOutputStrea(OutputStream ou)
  • BufferedOutputStream(OutputStream ou,int size)

与之对应的BufferedReader与BufferedWriter:

BufferedReader.readLine()方法是阻塞式的,如果到达流末尾,就返回null。如若未按照下面方式进行读取内容,则可能发生漏读的情况(while(new BufferedReader().readLine() != -1)或while(new BufferedReader().readLine() != null))

String str = null;
while((str = new BufferedReader().readLine()) != null){
    //System.output.println(str);/、此时的str为保存的一行字符串,不会少字符
}

注:

  • readLine()是读取到没有数据时就返回null,readlLne()是一个阻塞函数,当没有数据进行读取的时候,就会一直阻塞在那,而不是返回null。readLine()只有在数据流发生异常或者另一端被close()时,才会返回null值
  • 如果不指定buffer的大小,则readLine()使用的buffer有8192个字符。在达到buffer大小之前,只有遇到“/r”、"/n"、"/r /n"才会返回

未完待续。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值