Java Io流

一.概念

指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计更为简单。

流:指在计算机的输入输出操作中各部件之间的数据流动。按照数据的传输方向,流可分为输入流与输出流。Java语言里的流序列中的数据既可以是未经加工的原始二进制数据,也可以是经过一定编码处理后符合某种特定格式的数据。

二.流的分类

按流向分:

输入流: 程序可以从中读取数据的流。

输出流: 程序能向其中写入数据的流。

按数据传输单位分:

字节流: 以字节为单位传输数据的流

字符流: 以字符为单位传输数据的流

按功能分:

节点流: 用于直接操作目标设备的流

过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。

三.java.io常用类

InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。

OutputSteam:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。

Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。

Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。

四.InputStream类

inputstream类和outputstream类都为抽象类,不能创建对象,可以通过子类来实例化。

InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法.Inputstream类中的常用方法:

1. public abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。

2. public int read(byte b[ ]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的

3. public int read(byte b[ ], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。

代码示例:

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

public class InputTest02 {
    public static void main(String[] args) throws IOException {
        //输出流:把内容的内存输出到文件中(写操作) 输入流:把文件的内容输入到内存中(读操作)
        File f1=new File("D:/a.txt");
        InputStream in=new FileInputStream(f1);
//        int c1=in.read();
//        System.out.println(c1);
//
//        int c2=in.read();
//        System.out.println(c2);
//
//        int c3=in.read();
//        System.out.println(c3);
//
//        int c4=in.read();
//        System.out.println(c4);
        //获取全部
        int n;
        while ((n=in.read())!=-1){
            System.out.println((char) n);
        }
    }
}
import java.io.*;
import java.util.Arrays;

public class InputTest03 {
    public static void main(String[] args) throws IOException {
        File f1=new File("D:/a.txt");
        InputStream in= new FileInputStream(f1);
        byte[] b=new byte[10];
        //一次最多读取数组长度个字节,读取的内容转换成对应数字存入byte数组中,返回的是实际读取的字节数
        int n=in.read(b);
        System.out.println("读取的字节数"+n);
        String s=new String(b);
        System.out.println(s);

        byte[] b1=new byte[10];
        int n1=in.read(b1);
        System.out.println("读取的字节数"+n1);
        String s1=new String(b1,0,n1);
        System.out.print(s1);

        //循环实际写法
//        byte[] buffer=new byte[10];
//        int n;
//        while ((n=in.read(buffer))!=-1){
//            String s3=new String(buffer,0,n);
//            System.out.print(s3);
//        }

    }
}

五.outputstream类

OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。

1. public void write(byte b[ ]):将参数b中的字节写到输出流。

2. public void write(byte b[ ], int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。

3.public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。

代码示例:

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

public class Main {
    public static void main(String[] args) throws IOException {
        File f1= new File("d:/来自一个爱你的表白.txt");
        f1.createNewFile();
        //默认输出流是清空文件原来的数据,进行写入新的数据。设置为true则表示追加数据
        OutputStream out=new FileOutputStream(f1,true);
        String msg="爱你在每一个你不知道的瞬间!";
        byte[] bytes=msg.getBytes();//获取字符串 解析后的byte数组
        out.write(bytes);//把byte数组写入文件,相当于把字符串写入文件中
        out.write("/r".getBytes());
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值