Java的 io流

目录字节输入流的基本用法() 练习-文件拷贝 io流中不同JDK版本捕获异常的方式(了解)字符集详解 字符流 综合练习 高级流 转换流 序列化流 打印流 解压缩流/压缩流 常用工具包
io流的概述和分类
在使用IO流时,什么时候用就什么时候创建,什么时候不用就什么时候关闭
IO流:存储和读取数据的解决方案
就比如游戏的存档,需要两个知识点:文件的位置,信息的传输
注意,File类只能对文件本身进行操作,不能读写文件里的数据,所以需要学习io流,用于读写文件中的数据(可以读写文件,或网络中的数据)
io流可以把程序中的数据保存到文件中,也就是写出()数据,还可以把文件中的数据加载到程序中,就是读取(input)数据 。
以程序为参照物看读写的方向,是程序在读取或写出数据
纯文本文件:用记事本能看懂的文件
io流的体系
基本流
字节流字节输出流基本用法()字节输出流写出数据的细节字节输出流写出数据的三种方式 方法名说明
void write(int b)
一次写一个字节数据
void write(byte[ ] b)
一次写一个字节数组数据
void write(byte[ ] b,int off,int len)
一次写一个字节数组的部分数据
public static void main(String[] args) throws IOException {FileOutputStream fos=new FileOutputStream("D:\\我的世界\\a1.txt");//一次写一个fos.write(97);//a//一次写多个byte[]arr={97,98,99,100,101};//aabcdefos.write(arr);//一次写一个数组的一部分// void write(byte[ ] b,int off,int len)//这里的三个参数分别表示为://参数1:代表数组//参数2:代表截取的起始索引,截取时包括起始索引//参数3:代表截取元素的个数fos.write(arr,2,2);//释放资源fos.close();}
字节输出流写出数据的两个问题
写之前先了解一个字符串的方法
,可以把字符串转化为一个byte类型的数组
使用这个方法可以很方便的把一些文字写入文件中
public static void main(String[] args) throws IOException {FileOutputStream fos=new FileOutputStream("D:\\我的世界\\a1.txt");String s="laoyangzuihaokan";byte[] bytes = s.getBytes();fos.write(bytes);}
换行写和续写
在java中写单独的\r或\n也是可以的,java会自动补全,但是不推荐单独写
public static void main(String[] args) throws IOException {FileOutputStream fos=new FileOutputStream("D:\\我的世界\\a1.txt");String s1="laoyangzuihaokan";byte[] bytes1 = s1.getBytes();fos.write(bytes1);String s2="\r\n";byte[] bytes2 = s2.getBytes();fos.write(bytes2);String s3="olhhg";byte[] bytes3 = s3.getBytes();fos.write(bytes3);fos.close();//laoyangzuihaokan//olhhg}
public static void main(String[] args) throws IOException {FileOutputStream fos=new FileOutputStream("D:\\我的世界\\a1.txt",true);String s1="laoyangzuihaokan";byte[] bytes1 = s1.getBytes();fos.write(bytes1);String s2="\r\n";byte[] bytes2 = s2.getBytes();fos.write(bytes2);String s3="olhhg";byte[] bytes3 = s3.getBytes();fos.write(bytes3);fos.close();//运行两次后//laoyangzuihaokan//olhhglaoyangzuihaokan//olhhg}
字节输入流的基本用法()字节输入流读取数据的细节字节输入流循环读取
public static void main(String[] args) throws IOException {//创建对象//a1.txt的数据abcdeaadsadhasdbajhvabdbaiyFileInputStream fis=new FileInputStream("D:\\我的世界\\a1.txt");//循环读取int b;// 赋值很重要,可以用它读取数据while ((b=fis.read())!=-1){//这一步判断数据是否读到末尾System.out.print((char) b);}//abcdeaadsadhasdbajhvabdbaiy}