java基础—IO流

概念

IO(input,output)流通俗来讲,包含输入输出流,对数据的输入、输出操作以流的形式,主要负责设备(内存到硬盘)之间数据传输,在java 这方面 简单来说 ,就是使用java代码来操作文件

输入(input):读取外部数据,从 硬盘 到 内存(程序 )中

输出(input):将内存(程序)中的数据 写入 硬盘中

了解了什么是输入,输出流, 现在我们来看流的划分:

按照操作数据单位不同来划分:字节流(8bit)、字符流(16bit)

读取类似txt文件,我们一般用字节流

读取类似图片,视频,我们一般用字符流

按照流向不同来划分: 输入流 、输出流

来看一张流划分图

在这里插入图片描述

字节流

字节流:一次只读取一个字节,常用于文件读写 (inputStream,outputStream)

举个例子:

假如现在有个需求,将磁盘中的文件读取到 程序中

前面我们了解到 , 由硬盘到内存的操作是 输入操作,文件的 输入操作我们通常使用 FileInputStream

我们先在电脑 磁盘 D盘 手动创建一个 文件 1.txt
在这里插入图片描述
在1.txt 里面随机输入一些内容
在这里插入图片描述
编写代码,打印到控制台

 File f = new File("D:/1.txt");
        try (FileInputStream fis = new FileInputStream(f)) {
            byte[] bytes = new byte[(int) f.length()];
            fis.read(bytes);
            String str = new String(bytes, "UTF-8");
            System.out.println(str);
        } catch (IOException e) {
            e.printStackTrace();
        }

控制台结果:

在这里插入图片描述
现在反过来操作,从内存 到 硬盘 ,这就是输出操作 ,文件的输出操作我们一般使用 FileOutputStream

现在有个需求:在D盘的一个空文件2.txt 写入数据

       //1. 创建对象
        FileOutputStream out;
        try {
            out = new FileOutputStream("D:\\2.txt");
            out.write("今天星期四".getBytes());
            out.flush();//保存
            out.close();//流有开就一定有关闭流
        } catch (IOException e) {
            e.printStackTrace();
        }

程序成功运行,打开2.txt 里面就有了我们输入的内容:“今天星期四”

在这里插入图片描述

字符流

字符流通常用于二进制文件的读取,常见的图片,视频,音频 ,当然字符流也是可以读取纯文本的,而且相对来说比较友好

我们还是来读取 1.txt

//1.创建对象
        FileReader reader;
        try {
            reader = new FileReader("D:/1.txt");
            char [] chars = new char[1024];
            //读取全部
            int len;
            while((len=reader.read(chars))>-1){
                System.out.print(new String(chars,0,len));
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

输出结果:
在这里插入图片描述

缓冲流

我们前边出现的读取操作,都是使用数组来做媒介,这样会不会提高读写的效率呢?答案是肯定的,java 对此进行了封装,于是出现了 缓冲流 前缀 (buffered) 开发中主要使用

比如

BufferedReader BufferedWriter

BufferedInputStream BufferedOutputStream

现在我们还是读取1.txt的内容,可以这样写

  FileReader reader;
        try {
            reader = new FileReader("d://1.txt");
            BufferedReader bufReader = new BufferedReader(reader);
            String str;
            while((str = bufReader.readLine())!=null){
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

输出结果是一样的,但更加高效
在这里插入图片描述
来看看写的操作

FileWriter writer;
        try {
            writer = new FileWriter("D://3.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(writer);
            bufferedWriter.write("向3.txt写的东西");
            bufferedWriter.flush();
            bufferedWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

在这里插入图片描述

File 对文件的基本操作

  • 获取文件名字
 File file = new File("demo.txt");
        String name = file.getName();
        System.out.println(name);

在这里插入图片描述

  • 获取文件的 绝对路劲
  File file = new File("demo.txt");
        String absolutePath = file.getAbsolutePath();
        System.out.println(absolutePath);

在这里插入图片描述

  • 获取文件相对路劲
   File file = new File("demo.txt");
        System.out.println(file.getPath());

在这里插入图片描述

  • 删除文件
   file.delete();//删除
    file.deleteOnExit();//存在的时候,再删除

`

  • 创建目录

file.mkdirs();

写在最后:

以上便是本期全部内容了~,更多资讯敬请关注公众号【Java资讯】,技术文通俗易懂,打开微信扫一扫
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值