IO流学习记录

概述

IO流

1、什么是IO流

      存储和读取数据的解决方案,像水流一样传输数据 

 2、IO流的作用

       用于读取数据(本地文件 网络)

3、IO流按照流向可以分类哪两种流

       输出流:程序->文件

       输入流:文件->程序 

4、IO流按照操作文件的类型可以分为哪两种流

        字节流:可以操作所有类型的文件

        字符流:只能操作纯文本文件

5、什么是纯文本文件

        用windows系统自带的记事本打开并且能读懂的文件txt文件,md文件,xml文件,lrc文件等

IO流体系

FileOutPutStream

创建字节输出对象

  • 如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的、如果文件存在,则会清空文件(替换)

写数据

  • write方法的参数是整数,但是实际上写到本地文件中的整数在ASCll上对应的字符

释放资源

  • .close

字节流

FileOutPutStream写数据的方式

换行写

win:\r\n、linux:\n、Mac:\r

续写:

如果想要续写,打开续写开关,开关在创建对象的额第二个参数 设为true
默认是关闭的 此时创建对象会清空文件

学习到新的try(){}catch写法

public class FileDemo6 {

    public static void main(String[] args) throws IOException {
/* jdk1.7后的新写法  所谓的资源是指在程序完成后,必须关闭的流对象。写在()里面的流对象对应的类都实现了自动关闭接口AutoCloseable;*/
        try(FileInputStream fileInputStream = new FileInputStream("D:\\Java TestFile\\aaa\\ccc\\test.txt");
            FileOutputStream fileOutputStream = new FileOutputStream("D:\\Java Project\\java-foundation\\b.txt")) {
            int len;
            byte[] bytes = new byte[1024 * 1024 * 5];
            while((len=fileInputStream.read(bytes))!=-1){
                fileOutputStream.write(bytes,0,len);
            }
        } catch( IOException) {
            System.out.println("IO流异常");
        }
    }
}

字符集

//编码
String str="da胖虎";
//默认utf-8
byte[] bytes = str.getBytes("GBK");
System.out.println(Arrays.toString(bytes));//[100, 97, -59, -42, -69, -94]

//解码
String s1 = new String(bytes,"ISO-8859-1");
String s2 = new String(bytes,"GBK");
String s3 = new String(bytes,"UTF-8");
System.out.println(s1);//daÅÖ»¢
System.out.println(s2);//da胖虎
System.out.println(s3);//da�ֻ�

字符流

  1. 字符流底层就是字节流
  2. 输入流:一次读一个字节,遇到中文时,一次读多个字节,
  3. 输出流:底层会把数据按照指定的编码方式进行编码,变成字节在写到文件中
  4. 使用场景:对于纯文本文件进行读写操作

字符流原理解析

缓冲区:调用read方法每次都往缓冲区中读取数据,目的为了更快捷拿到想要的数据

文件拷贝

用字节流

文件拷贝时  必须是从文件开始到文件结束,图中字节输出流的dest文件下还有子目录,同时必须把被拷贝的文件写入拷贝的文件目录下,即file.getName(); 就是要把被拷贝文件名字写到拷贝的文件下。

高级流

1.缓冲流

字节缓冲流

 字节缓冲流提高效率的原理

字符缓冲流

 种类

转换流

是字节流和字符流之间的桥梁

 序列化流

可以把java中的对象写到本地文件中

 

打印流

1、只有输出流  只有写没有读

2、数据原样写出

3、自动刷新 自动换行 打印一次数据=写出+换行+刷新

Hutool工具包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值