java关于io流的使用及举例

import java.io.*;
import java.util.Arrays;

/*
* IO流
* data flow /data stream
*
*IO概述:
*    1.input 输入 读取数据    指的是从
*    2.output 输出 写出数据
*             输入
*     硬盘◉------------>内存
*             输出
 *    硬盘<------------◉内存
 *
 *IO分类
 *    按照流向
 *       输入流 指的是从硬盘读取数据到内存中
 *              字节输入流  以字节为单位读取数据
 *              字符输入流  以字符为单位读取数据
 *
 *       输出流 指的是从内存写出数据到硬盘中
 *              字节输出流  以字节为单位输出数据
 *              字符输出流  以字符为单位输出数据
*
*      根据类型
*         字节流
    *           字节输入流  以字节为单位读取数据  顶层父类  InputSream
    *           字节输出流  以字节为单位输出数据  顶层父类  OutputStream
 *
*
*         字符流
*               字符输入流  以字符为单位读取数据  顶层父类  Reader
 *              字符输出流  以字符为单位输出数据  顶层父类  Writer
 *
 *      总结
 *         1.字节流和字符流顶层父类都是抽象类
 *         2.集合类的顶层都是接口
*
* */
public class Demo2 {
    public static void main(String[] args) throws Exception {
        //注意事项
        //如果路径没有文件 会抛出异常
        //创建对象
        FileInputStream f= new FileInputStream("a.txt");

        //一次读取一个字节数组
        byte[] bys=new byte[4];//长度为3的空数组

        int len;
        while((len=f.read(bys))!=-1){
            System.out.println(new String(bys,0,len));
        }

        f.read(bys);
        System.out.println(Arrays.toString(bys));
        System.out.println(new String(bys));

        f.read(bys);
        System.out.println(Arrays.toString(bys));
        System.out.println(new String(bys));

        f.read(bys,0,2);
        System.out.println(Arrays.toString(bys));
        System.out.println(new String(bys));

        f.close();




    }

    private static void mm1() throws IOException {
        //FileInputStream 读取数据
        FileInputStream f = new FileInputStream("a.txt");


        //一次读取一个字节数据 读取到文件末尾就会返回-1
        int len;
        while((len=f.read())!=-1) {
            System.out.println((char)len);
        }


        f.close();
    }

    private static void m7() throws IOException {
        FileOutputStream f=new FileOutputStream("a.txt",true);

        f.write("jack".getBytes());
        //换行
        f.write("\r\n".getBytes());
        f.write("rose".getBytes());
        f.write("\r\n".getBytes());
        f.write("历史".getBytes());
        f.write("\r\n".getBytes());
        f.write("世界".getBytes());

        f.close();
    }

    private static void m6() throws IOException {
        //数据流追加
        //FileOutputStream f = new FileOutputStream("a.txt",true);
        FileOutputStream f = new FileOutputStream(new File("a.txt"),true);

        //拼接
        f.write("rose".getBytes());

        f.close();
    }

    private static void m5() throws IOException {
        //注意:1.虽然参数int是4个字节 但是只会保留1个字节输出
        //2.流操作完毕后  必须释放系统资源

        FileOutputStream f = new FileOutputStream("a.txt");
        //1.虽然参数int是4个字节 但是只会保留1个字节输出
        // f.write(97);

        //写97和353是一样的因为他只写1个字节
        //97在内存中的形式 00000000 00000000 00000000 01100001
        //353在内存中的形式 00000000 00000000 00000001 01100001

        //f.write(353);


        f.write("jack".getBytes());
        f.close();
    }

    private static void m4() throws IOException {
        //创建对象
        FileOutputStream f= new FileOutputStream("a.txt");

        f.write(98);
        //刷新缓冲区数据
        f.flush();

        //关闭流释放资源
        f.close();
    }

    private static void m3() throws IOException {
        //创建输出流对象
        FileOutputStream f=new FileOutputStream("a.txt");


        //f.write(100);
        //1使用write字节数组
//        byte[] bytes={97,98,99,100};
//        f.write(bytes);

        //2使用write字节数组
        byte[] bytes={97,98,99,100,103,104,105,106};
        f.write(bytes,4,4);
        f.close();
    }

    private static void m2() throws IOException {
        //字节输出流 OutputStream  主要是从内存中写出数据到内存中
        //子类 FileOutputStream

        //创建对象
        File file = new File("b.txt");
        FileOutputStream f = new FileOutputStream(file);

        //写出数据
        f.write(97);

        //完成流必须释放资源
        f.close();
    }

    private static void m1() {
        File file = new File("D:\\aaa\\a.txt");
        long num,num1,num2;
        num=(file.length()/1024);
        num1=((file.length()%1024)/100);
        num2=(((file.length()%1024)%100)/10);
        System.out.println(num+"."+num1+""+num2+"kb");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值