IO流:处理数据的传输
硬盘和内存之间的数据交互
将数据写到文件中,实现永久化存储
将数据读取出来
内存在读(输入input),内存在写(输出output)
IO流分类:
按照流向:输入流(读),输出流(写)
按照类型:字节流(操作数据最小单位是字节),字符流(操作数据最小单位是字符,只能操作纯文本文件(可以用windows自带记事本打开并且可以读懂))
字节输入流:InputStream
字节输出流:OtputStream
字符输入流:Rader
字符输入流:Writer
字节流可以操作任意数据,字符流是为了方便操作中文汉字
//创建输出流对象指定输出的目标位置 文件不存在会调用系统资源创建,文件存在会把文件中的内容清空 //写数据 传递整数,写到文件的是ASC码表中整数对应的字符 //释放资源 每次使用结束都需要释放资源 声明文件已经使用结束
没有释放资源,这种情况叫做内存泄漏
内存溢出:内存不够用了
//一次写一个 fos.write(int i); //一次写一个字节数组 fos.write(byte[],byte); //一次写一个数组的部分 fos.write(bytes[] byte,int off,int len);
换行: 将换行\r\n字符串先转换为字节,用getBytes()转换
追加写入:构造传两个参数,后面是true表示追加写入,默认false
IO流中的异常处理
释放资源必须执行
try{
}catch(){
}finally{
finally中的语句不管是否出现异常,都会执行
}
读操作:
文件存在进行读取,文件不存在报错
一次读取一个字节返回的是ASC码表中的值
如果要返回字符就需要强转为char类型
多次读取需要while循环,当循环到-1就代表数据读取结束