• Java基础IO类之字节输入输出流


    一、IO流概述

    1、IO流:输入输出流(Input/Output)

      流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,即数据在设备间的传输流,

    流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作

    大概来说:

    输入流:把数据从文件读到(输入)程序中

    输出流:从程序当中把一个数据(输出)写入文件中

    2、流的分类

      根据处理数据类型的不同分为:字符流和字节流

      根据数据流向不同分为:输入流和输出流

    (1)字节流

    a.字节输出流

    OutputStream类的定义:

    public abstract class OutputStream extends Object implements Closeable,Flushable

      此抽象类是表示输出字节流的所有类的超类,输出流接受输出字节并将这些字节发动到inputStream类的某个接受器

    b.字节输入流

    InputStream类的定义:

    public abstract class InputStream implements Closeable

      这个抽象类是所有基于字节的输入流的超类,抽象了Java的字节输入模型。在这个类中定义了一些基本的方法。

      

    FileinputStream 是它的子类 从文件系统中的某个文件中获得输入字节

    举例:

    package IODemo;
    
    import java.io.*;
    /**
     *   字节输出输入流
     * 输出流:超类OutputStream,对文件输出流的操作的子类是FileOutputStream
     * 输入流:超类InputStream,对文件输入流的操作子类是FileInputStream
     */
    public class ByteStreaDemo {
    
        private  static void in(){
            //1、确定目标文件
            File file = new File("D:\test\test.txt");
    
            try {
                //2、构建一个输入流对象
                InputStream in = new FileInputStream(file);
    
                // 读取的数据是一个字节一个字节的,所以要用一个字节数组来收
                // 相当于一个容器来装文件里面的东西 1024大小表示容器能装1024个字节 1024字节=1kb
                byte[] bytes = new byte[1024];
                int len = -1; //表示已经读取了多少个字节,如果是 -1,表示已经读取到文件的末尾
                //字符串拼接
                StringBuilder buf = new StringBuilder();
                //把数据读入到数组中,并且返回读取的字节数,当不等于-1时表示已经读取到了数据,等于-1时表示已经读完
                while ((len =  in.read(bytes)) !=-1){
                   buf.append(new String(bytes)); // 根据读取到的字节数组,转换为字符串内容,并且进行拼接,添加到StringBuilder中
                }
                System.out.println(buf);
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
        }
    
        private static void out(){
            //1、确定目标文件
            File file = new File("D:\test\test.txt");
    
            try {
                // 2、构建一个文件输出流的对象
                OutputStream out = new FileOutputStream(file,true);  // 如果加上true的话表示的是在原文件内容上追加内容,如果不加ture默认是重写
                // 3、内容
                String info = "大家好,我是落魄书生!
    "; //window  下 
     表示换行
                //4、out对象写入文件中 要字节类型 字符串转字节类型
                out.write(info.getBytes());
                System.out.println("写入成功!");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
    
            out();
            in();
        }
    }

      

  • 相关阅读:
    一维数组的相关问题
    逗号表达式
    三目表达式
    前自增和后自增的比较
    关于Spring中的PagedListHolder分页类的分析
    fmt:formatDate标签的输出格式
    用java流方式判断文件类型
    常用文件的文件头(附JAVA测试类)
    jsp页面判断文件上传类型
    spring MVC上传文件演示
  • 原文地址:https://www.cnblogs.com/lpss-75074038/p/11966527.html
Copyright © 2020-2023  润新知