zoukankan      html  css  js  c++  java
  • 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();
        }
    }

      

  • 相关阅读:
    这一年来,我的初三
    LGOJP4381 [IOI2008]Island
    BZOJ4484: [Jsoi2015]最小表示
    二分图染色及最大匹配(匈牙利算法)略解
    2019牛客多校第三场 F.Planting Trees
    性能优化 | 30个Java性能优化技巧,你会吗?
    进程 | 线程 | 当Linux多线程遭遇Linux多进程
    性能面试 | 性能测试常见面试题
    性能调优 | 如何通过性能调优突破 MySQL 数据库性能瓶颈?
    性能分析 | Java服务器内存过高&CPU过高问题排查
  • 原文地址:https://www.cnblogs.com/lpss-75074038/p/11966527.html
Copyright © 2011-2022 走看看