Java 笔记之IO(上)

IO

IO流

io是java中实现输入输出的基础,它可以很方便的完成数据的输入输出操作;
input
output

流的分类

输入流与输出流

输入流:只能从其中读取数据,却不能像里面写入数据;

输出流:只能向里面写入数据,去不能读取数据;

特点:流是单向的。

字节流

字节流操作的最小数据单元是8位字节,主要由InputStream、OutputStream作为基类。

读取内容:

  1. 一次读取一个字节

    

// 1. 创建输入流对象
        FileInputStream fr = new FileInputStream("1.txt")
 // 2. 读取内容,直接采用循环
        while(true) {
            int read = fr.read();
            if(read == -1) {
                break;
            }
            System.out.println(read);
        }
  1. 一次读取多个字节

    

// 1. 创建输入流对象
FileInputStream fr = new FileInputStream(new File("1.txt"));

// 2. 一次读取多个字节
byte[] arr = new byte[2];

//采用循环
while(true) {
    int n = fr.read(arr);
    if(n == -1) {
        break;
    }
    System.out.println(Arrays.toString(arr));
}
  1. 输出流例子:

    

// 1.创建了输出流
FileOutputStream fo = new FileOutputStream("2.txt");

// 2. 向输出流写入内容
fo.write(97);
fo.write(98);
fo.write(99);
//3.刷流
fo.flush();
// 4. 关闭输出流
fo.close();

字符流

字符流操作的最小数据单元是16位字节,主要由Reader与Writer作为基类。

   

public static void main(String[] args) throws IOException {
    // 1. 将字节流转换为字符流
    FileInputStream fr = new FileInputStream("1.txt");
    //文件编码需要一致
    InputStreamReader re= new InputStreamReader(fr, "utf-8");

    // 2. 读取
    while(true) {
        char[] arr = new char[1024];
        int len = re.read(arr);
        if(len == -1) {
            break;
        }
        System.out.println(Arrays.toString(arr));
    }

    // 3. 关闭, 只需要关闭外层的流, 内部会帮我们关掉内层的流
    reader.close();
}

字节输入流InputStream和字符输入流Reader

InputStream和Reader是所有输入流的基类,他们都是2个抽象类,本身并不能创建实例来执行输入,但他们有输入流的模版,所以它们的方法是所有的输入流和输出流可以用的方法。
在InputStream里常用的方法:
int read(): 从输入流中读取单个自己
int read(byte[] b): 从输入流中读取最多b.length个字节,将读取的字节存在数组b中,返回实际读取的字节数
int read(byte[] b, int off, int len): 从输入流中读取最多len个字节数据,并将其存储在数字b中,放入b数组中时,并不是从数组起点开始,而是从off位置开始,返回实际读取字节数。
在Reader里经常使用的方法:
int read(): 从输入流中读取单个字符
int read(char[] c): 从输入流读取最多c.length个字符数据,并将其存储在字符数组c中,返回实际读取的字符
int read(char[] c, int off, int len): 从输入流中读取最多len个字符的数据,将读取的数据放到字符数组c中保存,从数组的off开始读取。

OutputStream字节输出流和Writer字符输出流

具有以下方法:
void write(int c): 指定的字节、字符输出到输出流中
void write(byte[]/char[] buf): 将字节数组/字符数组中的数据传输到指定输出流中
void write(byte[]/char[] buf, int off,int len):将指定数组中的数据输出到指定输出流中
字符输出流还有以下方法:
void write(String s):将指定字符串输出到指定输出流中
void write(String s, int off, int len):将字节数组、字符数组中从off位置开始,长度为len的字节、字符输出到输出流中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值