Java核心API——io类

 程序的输入与输出

我们先来认识一下什么时在程序中输入与输出

输入是从外界到程序中的方向,是我们程序用于获取外界信息的过程,是"读"的过程 

输出是从程序到外界的方法,是我们程序向外界发送信息的过程,是"写"的过程

java.io.InputStream与OutputStream

输入流与输出流

这里的流相当于是程序与外界相连的一根管道,用于传输数据.而数据就是字节(2进制)

InputStream和OutputStream是两个超类,抽象类. java中实际用于读写数据的流都继承自他们.

文件流

java.io.FileInputStream和FileOutputStream 这两个流就继承自InputStream和OutputStream 这两个流是用于连接我们程序和文件之间的管道,读写文件数据(读写硬盘)的目录要存在

输出OutputStream

 FileOutputStream是用于连接程序与程序的管道,负责将程序的数据发送到文件中 常用的构造方法: FileOutputStream(File file) FileOutputStream(String path) 注:如果指定的文件不存在,文件流会自动创建它.前提是该文件所在目录要存在

 
 
        FileOutputStream fos = new FileOutputStream("./fos.dat");
        /*
            OutputStream上定义的方法:
            void write(int d)
            通过当前输出流向目标位置写出1个字节,写出给定int值对应2进制的"低八位"

            fos.write(1);
            1个int值4个字节,32位2进制
            00000000 00000000 00000000 00000001
                                       ^^^^^^^^
                                       实际写出的数据

            fos.dat文件中:
            00000001

            ---------------------------------------------

            fos.write(2);
            1个int值4个字节,32位2进制
            00000000 00000000 00000000 00000010
                                       ^^^^^^^^
                                       实际写出的数据

            fos.dat文件中:
            00000001 00000010
         */
        fos.write(1);
        fos.write(2);
        System.out.println("写出完毕");
        fos.close();//流使用完毕后要关闭

输入InputStream

使用文件输入流从文件中读取字节数据

InputStream的超类中定义了读取一个字节的方法int read()

通过流读取1个字节到程序中,返回的int值对应的2进制"低八位"有效.

如果返回的int值直接表示整数-1,则表示流读取到了末尾EOF EOF:end of file

        FileInputStream fis = new FileInputStream("./fos.dat");
            fos.dat内容:
            00000001 00000010
---------------------------------------------------------------------
            第一次调用:
            int d = fis.read()

            fos.dat内容:
            00000001 00000010
            ^^^^^^^^
            读取的字节

            读取后变量d的2进制样子:
            00000000 00000000 00000000 00000001
            |---------补充24个0-------| ^^^^^^^^
                                       读取到的数据
         */
        int d = fis.read();
        System.out.println(d);//1
        /*
            第二次调用:
            d = fis.read()

            fos.dat内容:
            00000001 00000010
                     ^^^^^^^^
                     读取的字节

            读取后变量d的2进制样子:
            00000000 00000000 00000000 00000010
            |---------补充24个0-------| ^^^^^^^^
                                       读取到的数据
         */
        d = fis.read();
        System.out.println(d);//2
        /*
            第三次调用:
            d = fis.read()

            fos.dat内容:
            00000001 00000010
                               ^^^^^^^^
                               文件末尾

            读取后变量d的2进制样子:
            11111111 11111111 11111111 11111111
            |------------补充32个1-------------|

         */
        d = fis.read();//-1
        System.out.println(d);

        System.out.println("读取完毕");
        fis.close();

 

 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值