IO

72 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

大家好,我是尚影嫣🌷,一名Java后端程序媛。如果您喜欢我的文章,欢迎点赞➕关注❤️,让我们一起成为更好的我们~🥰

IO

I-in,O-out,对应计算机数据的写入、读取 一切皆字节 计算机中的任何数据都是以二进制的形式存储的,

IO流概述

可以将这种数据传输操作,看做一种数据的流动 , 按照流动的方向分为输入Input和输出Output Java中的IO操作主要指的是 java.io包下的一些常用类的使用. 通过这些常用类对数据进行读取(输入Input) 和 写出(输出Output)

IO流的分类: 按照流的方向来分,可以分为:输入流和输出流. 按照流动的数据类型来分,可以分为:字节流和字符流

字节流:
     -   输入流 :   InputStream
     -   输出流 :   OutputStream
字符流:
     -   输入流 :   Reader
     -   输出流 :   Writer

一切皆字节:

  • 计算机中的任何数据(文本、图片、视频、音乐等)都是以二进制的形式存储的。
  • 在数据传输时,也都是以二进制的形式存储的。
  • 所有流在传输时,底层都是二进制。

代码示例如下:

public class InputStreamDemo {
    //InputStream
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("c://a.txt");
        while (true){
            byte b = (byte) fis.read();
            if(b==-1){
                break;
            }
            System.out.println(b);
        }
        byte[] bytes = new byte[10];
        int len = fis.read(bytes);
        System.out.println(new String(bytes,0,len));
        len = fis.read(bytes);
        System.out.println(new String(bytes,0,len));
        len = fis.read(bytes);
        System.out.println(new String(bytes,0,len));
        fis.close();
    }
}



public class DemoFile {
    public static void main(String[] args) {
        File e = new File("e://");
        File[] files = e.listFiles();
        listFile(files);

    }

    public static void listFile(File[] files){
        if(files!=null&&files.length>0){
            for (File file:files) {
                if(file.isFile()){
                    if(file.getName().endsWith(".avi")){
                        if(file.length()>100*1024*1024)
                        System.out.println("找到了一个avi文件"+file.getAbsolutePath());
                    }
                }else {
                    File[] files2 = file.listFiles();
                    listFile(files2);
                }
            }
        }

    }
}