1.1 IO流的概述
**
IO(Input/Output),本质是数据传输。
IO流的分类:
按照数据的流向:输入流(读数据)、输出流(写数据)。
按照字节类型:
- 字节流:字节输入流、字节输出流
- 字符流:字符输入流、字符输出流
IO流的使用场景:
- 如果用电脑自带的记事本打开文件是我们可以读懂的话,优先使用字符流。
- 如果是读不懂的话,优先使用字节流。字节流是万能流。
**
1.2字节流写数据
**
步骤:
1.创建字节流对象
FileOutputStream fos = new FileOutputStream(String name);
2.调用字节输出流对象的写数据方法
有三种方法:
void write(int b)
void write(byte[] b)
void write(byte[] b,int off,int len)`
3.释放资源
fos.close()
**注:**写数据的两个小问题:
1.字节流写数据如何实现换行
- Windows系统:fos.write("\r\n")
- linux系统:fos.write(“\n")
- mac系统:fos.write("\r")
2.如何实现追加写入文件的末尾
FileOutputStream fos = new FileOutputStream(String name,boolean true);
**
1.3字节流写数据加异常处理**
为保证IO流中的释放资源,加入finally块。被finally控制的语句一定会执行,除非jvm退出。
异常处理格式为
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常处理的代码;
}finally{
执行所有清除操作;
}
**
1.4字节流读数据**
步骤:
1.字节输入流写数据
FileInputStream fis = new FileInputStream("myByteStream\\fos.txt");
- //写数据
int read;
/*
1.fis.read()读数据
2.将读到的数据赋值给read
3.判断read是否等于-1
*/
//一次读取一个字节数据
while((read = fis.read() )!= -1){
System.out.print((char)read);
}
//一次读取一个字节数组
byte[] bys = new byte[1024];
int len;
while((len = fis.read(bys)) != -1){
System.out.print(new String(bys,0,len));
}
- //释放资源
fis.close();
1.5字节缓冲流
- BufferOutputStream该类实现缓冲输出流,其爷爷类是OutputStream.通过这样设置,可以设置一个缓冲区,将来数据一次性写入文件中,减少底层调用的次数。
- BufferInputStream该类实现缓冲输入流,其爷爷类是InputStream。内部缓冲区一次性可以读取多个字节。
字节缓冲流可以提高数据读取的效率。
构造方法:
BufferedOutputStream(OutputStream out)
BufferedInputStream(InputStream in)