JavaIO流的基本使用方法

IO流的基本使用

前言

首先见名知意,Java 把 Input输入流 和 Output 输出流,统称为IO流。主要进行Java的文件操作。
Java中的IO流主要分为两大类,字节流和字符流。
关系如下图所示:
在这里插入图片描述

字节流可以处理任何类型的数据,如图片,视频等,字符流只能处理字符类型的数据。


一、字节流

字节流:

字节流以字节(8bit)为单位。

字节流可以处理任何类型的数据,如图片、txt、avi等。而

1.1:字节输入流对象的创建与基本使用

我们提前在该模块准备一个a.txt文件
可见,该文件中的内容只有abc
在这里插入图片描述

ackage FileInputStream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        /*
        字节输入流FileInputStream
        实现需求:读取文件中的数据(暂时不写中文)
        实现步骤:
            创建对象
            读取资源
            释放资源
         */
        // 1 创建对象
        FileInputStream fis=new FileInputStream("myio\\a.txt");
        // 2 读取数据
        int b1 = fis.read();
        System.out.println((char)b1);
        // 3 关闭
        fis.close();
    }
}

运行完成后,我们的控制台显示一个字符a,可见这种方式一次只能获取一个字节的内容。
在这里插入图片描述
这里我们要注意一些字节数输入流的细节。

/*
        字节输入流的细节
            1.创建字节输入流对象
                细节1;如果文件不存在,就直接报错
                Java为什么会这么设计
                输出流:不存在,创建
                输入流:不存在,报错  因为创建出来的文件是空的,没有意义
            2.写数据
                细节1:一次只读一个字节,读出来的是数据在Ascii上对应的数字
                细节2:读到文件末尾了,read方法返回-1
            3.释放资源
                每次使用完流之后要记得释放资源
         */

1.2:字节输出流对象的创建与基本使用

package FileOutputStream;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        /*
        字节输出流FileOutStream
        实现需求:写出一段文字到本地文件中(暂时不写中文)
        步骤:
            创建对象
            写出数据
            释放资源
         */

        // 1 创建对象
        //写出 输出流 OutputStream
        //本地文件 File
        FileOutputStream fos=new FileOutputStream("myio\\b.txt");
        //写入数据
        fos.write(97);
        //释放资源
        fos.close();

    }
}

运行完成后,我们发现,该项目下的出现了一个b.txt文件
在这里插入图片描述
此时字节输出完成。
这里我们要注意一些字节数输出流的细节。

/*
        字节输出流的细节:
            1;创建字节输出流对象
                    细节1:参数是字符串表示的路径或者是File对象都是可以的
                    细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
                    细节3;如果文件已经存在,则会清空文件
            2:写数据
                    细节:writer方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符
                    97-->a
            3:释放资源
                    每次使用完流之后都要释放资源

         */

1.3:字节输入流与字节输出流的批量使用

1.3.1:字节输入流:

package FileInputStream;

import java.io.FileInputStream;
import java.io.IOException;

public class Demo5 {
    public static void main(String[] args) throws IOException {
        /*
        public int read(byte[] buffer)  一次读一个字节数组数据
         */
        // 1 创建对象
        FileInputStream fis=new FileInputStream("myio\\a.txt");

        // 2 读取
        byte[] bytes=new byte[2];
        //一次读取多个字节数据,跟数组的长度有关
        int len = fis.read(bytes);
        System.out.println(len);
        String str=new String(bytes,0,len);
        System.out.println(str);

         len = fis.read(bytes);
        System.out.println(len);
        String str1=new String(bytes,0,len);
        System.out.println(str1);


        // 3 关闭
        fis.close();
    }
}

1.3.2:字节输出流:

package FileOutputStream;

import java.io.FileOutputStream;
import java.io.IOException;

public class Demo3 {
    public static void main(String[] args) throws IOException {
        // 1 创建对象
        FileOutputStream fos=new FileOutputStream("myio\\a.txt");
        // 2 写出数据
//        fos.write(97);
//        fos.write(98);
        byte[] bytes={97,98,99,100,101};
//        fos.write(bytes);
        fos.write(bytes,2,3);
        // 3 释放资源
        fos.close();
    }
}

二、字符流

字符流:

字符流以字符为单位。根据码表映射字符,一次可能读多个字节。

字符流只能处理字符类型的数据。
.

2.1:字符输入流对象的创建与基本使用

提前准备一个a.txt文件
在这里插入图片描述

package charstream;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Demo2 {
    public static void main(String[] args) throws IOException {
        // 1 创建对象
        FileReader fr=new FileReader("myio\\a.txt");
        // 2 读取数据
        char[] chars=new char[1024];//这里chars的长度关系到一次读取的长度
        int len;
        while ((len=fr.read(chars))!=-1){
            System.out.println(new String(chars,0,len));
        }
        // 3 释放资源
        fr.close();
    }
}

运行后控制台打印以下内容
在这里插入图片描述
这里要注意的细节是:

//  读取数据
        //字符流的底层也是字节流,默认也是一个字节一个字节的读取的
        //如果遇到中文就会一次读取多个,GBK一次读两个字节,UTF-8一次读三个字节

2.2:字符输出流对象的创建与基本使用

字符输出流的使用比较简单

package charstream;

import java.io.FileWriter;
import java.io.IOException;

public class Demo3 {
    public static void main(String[] args) throws IOException {
        //Write  写

        FileWriter fw=new FileWriter("myio\\输出.txt");

        fw.write("你好啊?爱的速递");

        fw.close();
    }
}

运行完成后:该模块下会自动创建一个 输出.txt文件
该文件中的内容如下:
在这里插入图片描述


总结

今天的IO流基础知识就分享到这里。
关于IO流的内容还有很多很多,感兴趣的小伙伴请继续寻找资料学习哦。
下期再见!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值