zoukankan      html  css  js  c++  java
  • java 输入输出IO流:FileOutputStream FileInputStream

    什么是IO:

    生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了 ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。
    我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为 输入input 和 输出 output ,即流向内存是输入流,流出内存的输出流。
     

    IO分类:

    根据数据的流向分为:输入流和输出流。
    • 输入流 :把数据从 其他设备 上读取到 内存 中的流。
    • 输出流 :把数据从 内存 中写出到 其他设备 上的流。
     
    格局数据的类型分为:字节流和字符流。
    • 字节流 :以字节为单位,读写数据的流。
    • 字符流 :以字符为单位,读写数据的流。

    OutputStream:

    OutputStream是一个抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。
    • public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
    • public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
    • public void write(byte[] b) :将 b.length字节从指定的字节数组写入此输出流。
    • public void write(byte[] b, int off, int len) :从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。
    • public abstract void write(int b) :将指定的字节输出流。

    1、FileOutputStream:

    FileOutputStream类是文件输出流,用于将数据写出到文件。它是OutputStream非常经典的实现类,它有两个构造方法:
    • public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件。
    • public FileOutputStream(String name) : 创建文件输出流以指定的名称写入文件。

    示例:

            OutputStream outputStream = new FileOutputStream("输入输出文件读写/src/test/output/out-int.txt");
            outputStream.write(97);     //字符a
            outputStream.write(98);     //字符b
            outputStream.write(99);     //字符c
            outputStream.close();   //务必关闭流,否则jvm不会释放资源
            OutputStream outputStream1 = new FileOutputStream("输入输出文件读写/src/test/output/out-bytes.txt");
            //byte[] b) :将 b.length字节从指定的字节数组写入此输出流
            byte[] b = "老师好".getBytes();
            System.out.println(b.length);
            outputStream1.write(b);
            outputStream1.close();
            OutputStream outputStream2 = new FileOutputStream("输入输出文件读写/src/test/output/out-bytes-range.txt");
            outputStream2.write(b,0,6); //写入"老师" (一个中文字符3个字节)

    InputStream:

    InputStream抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。
    • public void close() :关闭此输入流并释放与此流相关联的任何系统资源。
    • public abstract int read() :从输入流读取数据的下一个字节。当读到了最后一个字节的时候,继续往下读,返回-1,否则返回字节对应的编码。
    • public int read(byte[] b) :从输入流中读取一些字节数,并将它们存储到字节数组b中,返回的是我们读取的长度,如果读取到文件末尾了,返回-1
     

    2,FileInputStream:

    • FileInputStream(File file) : 通过打开与实际文件的连接来创建一个 FileInputStream
    • FileInputStream(String name) : 通过打开与实际文件的连接来创建一个 FileInputStream
    当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出 FileNotFoundException 。
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    
    /**
     * @ClassName FileInputExample
     * @projectName: object1
     * @author: Zhangmingda
     * @description: XXX
     * date: 2021/4/17.
     */
    public class FileInputExample {
        public static void main(String[] args) throws IOException {
            InputStream inputStream = new FileInputStream("输入输出文件读写/src/test/output/out-bytes.txt");
            StringBuffer stringBuffer = new StringBuffer(); //存放长字符串
            byte[] tmpBytes = new byte[1024];  //临时字节数组,用来保存每次读取的字节
            int len;
            while ((len = inputStream.read(tmpBytes)) != -1){ //循环重复利临时byte[]数组保存临时读取的字节
                String tmpStr = new String(tmpBytes,0,len);     //读取的字节转换为字符串
                System.out.print(tmpStr); //查看每次打印的字符串
                stringBuffer.append( tmpStr);   //字符串拼接
            }
            System.out.println(stringBuffer); //打印字符串
            inputStream.close();
        }
    }
     
  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/14670969.html
Copyright © 2011-2022 走看看