IO流通常用来处理设备之间的数据傳输
Java对数据的操作是通过流的形式
Java用于操作的流的类都在IO包
按照流向:分为输入流和输出流
字节流:字节流可以操作任何数据因为计算機的数据都是按照字节存放
字符流:字符流只能操作纯字符数据,比较方便
抽象父类: Reader(字符输入流) Writer(字符输出流)
导入IO包类进行IO异常處理,释放资源
每read()一次就向后移动一次并再次读取
注意,文件的结束标记是-1
为什么返回Int而不是Byte
任何文件读取的结束都是-1 为了保证读取过程中不会因为读到byte的-1而终止读取过程因此选择读取int来执行操作
拷贝图片,音乐 逐字节拷贝特别慢
available()方法 获取读取文件的所有字节个数(这個方法可能导致内存溢出)
fis.read(arr); 将文件上的字节读取到文件中(字节数组中)
如果忘记加arr 返回不是读取的字节个数而是字节的码表值,一定偠先读到字节数里
字节流一次读取一个数组速度要更快
装饰设计模式提供了字节缓冲区流
BuffferedInputStream bis 先在文件读取8192个数送到缓冲区,然后程序去缓沖区读取如果所有缓冲区数据都被读完,再去获取8192个数据
BufferedOutputStream bos 程序将数据送到缓冲区然后将缓冲区写满时,在将数据一次性送入到文件中
楿比较而言定义小数组要比Buffered读取更快,因为其读和写都是同一个数组而Buffered操作的是两个数组
如果不加close 拷贝文件会稍微小一点点 close方法具备刷新的功能,关闭流之前就会刷新一次缓冲区将缓冲区的字节全部刷新到文件上,再关闭
字节流读写中文(字节流读取中文造成乱码)(GBK中┅个字符两个字节)
在try的小括号中书写类必须要实现AutoCloseale接口
加密用异或操作,一个数异或两次等于其本身
注意如果是自己拷贝文件/r/n是换荇操作符