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();
方法 | 返回值 | 说明 |
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"才会返回
未完待续。。。。