最简单的IO理解

IO流

img

首先要理解 外存,内存,缓存

io分为输入和输出:

个人理解:
  • 输出就是(OutputStream):把文件从idea上输出出去

  • 输入就是(InputStream):把文件读取到idea上去

输入输出又可以分为:
  1. 字节流:数据流中最小的数据单元是字节

    输出:OutputStream

    输入:InutStream

  2. 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节(无论中文还是英文都是两个字节)。

    输出:Writer

    输入:Reader

最基本的输入输出:

​ System.out 标准输出流

​ System.in 标准输入流

看到这你应该很熟悉,如果不熟悉你就应该反思一下

File类

专门管理磁盘文件与目录:创建抽象路径

注意:File 类只能操作文件的属性,文件的内容是不能操作的。

  • 因为每种系统路径的分隔符都是不一样的,所以java提供了separator方法
//不使用 Java 提供的分隔符字段,注意:这样写只能在 Windows 平台有效
File f1 = new File("D:\\IO\\a.txt");或者是D:/IO/a.txt
//使用 Java 提供的分隔符File f2 = new 		    File("D:"+File.separator+"IO"+File.separator+"a.txt");
File 类的常用方法

  ①、**创建方法**

    1.boolean createNewFile() 不存在返回true 存在返回false
    2.boolean mkdir() 创建目录,如果上一级目录不存在,则会创建失败
    3.boolean mkdirs() 创建多级目录,如果上一级目录不存在也会自动创建

  ②、**删除方法**

    1.boolean delete() 删除文件或目录,如果表示目录,则目录下必须为空才能删除
    2.boolean deleteOnExit() 文件使用完成后删除

  ③、**判断方法**

    1.boolean canExecute()判断文件是否可执行
    2.boolean canRead()判断文件是否可读
    3.boolean canWrite() 判断文件是否可写
    4.boolean exists() 判断文件或目录是否存在
    5.boolean isDirectory()  判断此路径是否为一个目录
    6.boolean isFile()  判断是否为一个文件
    7.boolean isHidden()  判断是否为隐藏文件
    8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断

  ④、**获取方法**

    1.String getName() 获取此路径表示的文件或目录名称
    2.String getPath() 将此路径名转换为路径名字符串
    3.String getAbsolutePath() 返回此抽象路径名的绝对形式
    4.String getParent()//如果没有父目录返回null
...........

不喜欢写这些对象方法,因为你可以去jdk中查找

这里直接带过字节流,字符流————太简单了,看看api就会用的东西

  1. 读取数据流
  2. 装载到一个数组中
  3. 遍历存储到一个文件中直到遇到-1这种就停止

剩下的就是方法调用

缓冲流或管道流

字节缓冲流:BufferedInputStream、BufferedOutputStream

字符缓冲流:BufferedReader、BufferedWriter

所谓缓冲流其实就和我们普通的字节字符流差不多,你在使用普通流的时候就已经把数据装载到了数组中,而我们看缓冲流源码可知他已经给我们提供了一个大小8192的数组;

在这里插入图片描述

//字节缓冲输入流
        BufferedInputStream bis = new BufferedInputStream(
                new FileInputStream("io"+File.separator+"a.txt"));
        //定义一个字节数组,用来存储数据
        byte[] buffer = new byte[1024];
        int len = -1;//定义一个整数,表示读取的字节数
        while((len=bis.read(buffer))!=-1){
            System.out.println(new String(buffer,0,len));
        }
        //关闭流资源
        bis.close();<br><br>
         
        //字节缓冲输出流
        BufferedOutputStream bos = new BufferedOutputStream(
                new FileOutputStream("io"+File.separator+"a.txt"));
        bos.write("ABCD".getBytes());
        bos.close();
//字符缓冲输入流
        BufferedReader br = new BufferedReader(
                new FileReader("io"+File.separator+"a.txt"));
        char[] buffer = new char[10];
        int len = -1;
        while((len=br.read(buffer))!=-1){
            System.out.println(new String(buffer,0,len));
        }
        br.close();
         
        //字符缓冲输出流
        BufferedWriter bw = new BufferedWriter(
                new FileWriter("io"+File.separator+"a.txt"));
        bw.write("ABCD");
        bw.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_Go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值