IO流:存贮和解决数据的存储方案
以上都是抽象类,不能创建实例
FileOutputStream
操作本地的文件,把文件写入本地磁盘
步骤:
1.创建字节输出流对象
- 参数是字符串表示的路径或者是File对象都是可以的
- 如果文件不存在会创建一个新的文件,但要保证父级路径是存在的
- 如果文件存在,会清空文件
2.写数据
- write方法是整数,实际写到文件中的是整数在AsCll中对应的字符
3.释放资源
- 每次用完流都要释放资源
字节流写出数据的方式(3种)
- void write(int b)
- void write(byte[] b)
- void write(byte[] b,int off,int len)
换行与续写
换行: (再次写出一个换行符就可以了)
window :\r \n
linux: \n
mac: \r
创建流对象时第二个参数是续写开关,
true是续写打开
false是续写关闭
FileInputStream
操作本地文件的输入流
步骤:
1.创建对象
文件路径不存在会直接报错
2.读取数据
一次读取一个字节,读取出来的数字是数据在ASCLL上对应的数字
当读到文件末尾后会返回-1(空格和没有是不同的)
3.释放资源
字节输入流循环读取
int b;
while ((b=fip.read())!=-1){fop.write(b);
}
文件拷贝
- 创建对象
- 拷贝
核心思想,边读边写
while ((b=fip.read())!=-1){fop.write(b);
}
优化:
一个传输一个字节数组
int len;
byte[] bytes=new byte[1024*1024];
while ((len=fip.read(bytes))!=-1){fop.write(bytes,0,len);
}
3.释放资源
规则:先开的最后关闭
IO流中的异常捕获
(实际开发都是抛出处理理解就行)