io流
io流概述
I 表示 input, 从硬盘 进入到 内存,读
O 表示 output,从内存 输出到 硬盘, 写
io表示内存 ( 数据流 ) 的操作方式
Io流分类
- 按流向分
- 输入流
- 输出流
- 按数据类型分
- 字节流:操作所有类型的对象
- 字符流:只能操作纯文本文件
字节流写数据 步骤
-
创建字节流输出对象
FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");
-
写数据
void write(int b) //一次写一个字节数据 void write(byte[] b) //一次写一个字节数组数据 void write(byte[] b, int off, int len) //一次写一个字节数组的部分数据 从off索引开始,写len个字节,注意下标越界问题
-
释放资源(必须释放)
-
注意事项:
-
换行方式:
windows:\r \n linux: \n mac: \r
-
字节流追加写入
public FileOutputStream(String name,boolean append) //创建文件输出流以指定名称写入文件,第二个参数为true,写入末尾
字节流写数据加异常处理
-
异常处理格式
-
try-catch-finally
try{ 可能出现异常的代码; } catch(异常类名 变量名){ 异常的处理代码; } finally{ 执行所有清除操作; }
-
finally特点:一定会执行
-
字节流读数据
- FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名
- 步骤
- 创建字节输入流对象
- 调用字节输入流对象的读数据方法
- 释放资源
读取方法:
-
单字节读取
int by; while ((by = fis.read()) != -1) { fos.write(by); }
-
字节数组读取
byte[] bys = new byte[1024]; int len ; while ((len =fis.read(bys))!=-1) { fos.write(bys,0,len); }
字节缓冲流
- 字节缓冲流介绍
- lBufferOutputStream:该类实现缓冲输出流.通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用
- lBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组.当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节
构造方法:
BufferedOutputStream (OutputStream out) //创建字节缓冲输出流对象
BufferedInputStream(InputStream in) //创建字节缓冲输入流对象
//字节缓冲输出流:BufferedOutputStream(OutputStream out)
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("url"));
//写数据
bos.write("hello\r\n".getBytes());
bos.write("world\r\n".getBytes());
//释放资源
bos.close();
//字节缓冲输入流:BufferedInputStream(InputStream in)
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("url"));
byte[] bys = new byte[1024];
int len;
while ((len=bis.read(bys))!=-1) {
System.out.print(new String(bys,0,len));
}
//释放资源
bis.close();