1.IO流基本概念
按流向分为:输入流,输出流
Java用于操作流的都在IO包中
按操作类型分为:字符流,字节流。
2.IO流的常用父类
字节流常用父类
InputStream
OutputStream
字符流常用父类
Reader
Writer
3.IO程序书写
使用前,导入IO包中的类
使用时,要进行异常处理
使用后,要释放资源
FileInputStream
read()一次读取一个字节
当读取到的数据为空时,返回-1
对象名.close关闭流释放资源
read()方法读取的是一个字节,为什么返回的是int,而不是byte
因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件都是以二进制的形式存储的,如果每次读取都返回byte类型,有可能在读取时遇到11111111,那么这个11111111是byte类型的-1,程序就会停止,后面的程序就无法读取,所以在读取的时候用int类型接收,如果11111111会在前面补上24个0凑足4字节,那么byte类型的-1就变成iny=t类型的255了,这样就可以保证整个数据读完,而结束标记是-1
FileOutputStream
输出时,如果没有文件会自动创建一个,如果有的话会将文件先清空
如果想续写就在第二个参数传true
write()写出时会自动将前面的三个字节去掉,写出一个byte
拷贝1:
FileInputStream fis = new FileOutputStream("文件.jpg");
FileOutputStream fos = new FileOutputStream("Copy.jpg");
int b;
while((b = fis.read()) != -1){
fos.write(b);
}
fis.close();
fos.close();
拷贝2:
FileInputStream fis = new FileInputStream();
FileOutputStream fos = new FileOutStream();
byte[] arr = new byte(fis.avaiable);
fis.read(arr);
fos.write(arr);
fis.close();
fos.close();