Java回炉之IO流(一)
InputStream
字节输入流
FileInputStream
构造方法
- FileInputStream(File file):通过文件创建
- FileInputStream(String name):通过文件名创建
- FileInputStream(FileDescriptor fdobj):
读数据
- int read():一次读一个字节作为返回值(每读一次指针后移,返回-1说明到达文件末尾)
- int read(byte[] b):一次读一组字节放入参数中,返回值为实际读取的字节数(每读一次指针后移,返回-1说明到达文件末尾)
关闭
- close()
BufferedInputStream
构造方法
- BufferedInputStream(InputStream os):使用默认缓冲区大小
- BufferedInputStream(InputStream os,int size):指定默认缓冲区大小
读数据
- int read():读一个字节
- int read(byte[] b):读一组字节
关闭
- close():会把构造器中的参数Stream一起close
OutputStream
字节输出流
FileOutputStream
构造方法
- FileOuputStream(File file):根据文件创建文件字节输出流
- FileOutputStream(File file,boolean append):第二个参数为true为追加模式
- FIleOutputStream(String name):根据文件名创建字节输出流
- 在物理上创建文件、创建文件字节输出流对象、把流对象指向文件
写数据(物理上写入)
- write(int b):写一个字节
- write(byte[] b):写一组字节
- write(byte[] b,int off,int length):写一组字节的一部分
- write(“\r\n”.getBytes()):写入换行(\r\n-windows \n-linux \r-Mac)
关闭
- close():关闭流并通知系统释放资源
异常处理
FileOutputStream fos = null;
try {
// fos = new FileOutputStream("z:\\fos4.txt");
fos = new FileOutputStream("fos4.txt");
fos.write("java".getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 如果fos不是null,才需要close()
if (fos != null) {
// 为了保证close()一定会执行,就放到这里了
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
BufferedOutputStream
构造方法
- BufferedOutputStream(OutputStream os):使用默认缓冲区大小
- BufferedOutputStream(OutputStream os,int size):指定默认缓冲区大小
- 本类只提供缓冲作用,流处理通过构造器的参数提供
写数据
- write(int b):写一个字节
- write(byte[] b):写一组字节
- write(byte[] b,int off,int length):写一组字节的一部分
- write(“test”.getBytes());
关闭
- close():会把构造器中的参数Stream一起close
Reader
字符输入流
- BufferReader
- 字符缓冲输入流
- new BufferedReader(new FileReader("test.txt"));
- read(char)
- read(char[])
- readLine():读一行字符
- close()
Writer
字符输出流
- BufferedWriter
- 字符缓冲输出流
- new BufferedWriter(new OutputStreamWriter(new FileOutputStream("test.txt")));
- new BufferedWriter(new FileWriter("test.txt"));
- write()
- newLine():换行
- flush()
- close()
转换流
转换流其实是字符流
1. OutputStreamWriter
- 把字节流转换成字符流
- OutputStreamWriter(OutputStream out):用默认编码表把字节流转换为字符流
- OutputStreamWriter(OutputStream out,String charsetName):用指定编码表把字节流转换为字符流
- write(int c):写一个字符
- write(char[] cbuf):写一个字符数组
- write(char[] cbuf,int off,int len):洗衣歌字符数组的一部分
- write(String str):写一个字符串
- write(String str,int off,int len):写一个字符串的一部分
- flush():从缓冲区刷入文件
- close()
InputStreamReader
- InputStreamReader(InputStream in):用默认编码
- InputStreamReader(InputStream in,String charsetName):用指定编码
- read():一次读取一个字符
- read(char[] chs):一次读取一个字符数组
- close()
FileWriter
- FileOutputStream + 默认编码表
FIleReader
- FileInputStream + 默认编码表
总结
图片源文件下载