zoukankan      html  css  js  c++  java
  • IO字节流

    IO概述:

    I:Inuput输入(从硬盘读取文件到内存);

    O: Output输出(将数据从内存写入硬盘);

    流:一种写入数据的抽象方式,是有方向的

     

     

    顶层父类:

          输入流     输出流

    字节流   InputStream   OutputStream

    字符流   Reader       Writer

     

    字节流

    一切文本数据在存储时,都以二进制形式保存(以字节为单位),传输时一样如此,所以字节流可以传输任意文件数据。在操作流时,无论使用什么流对象,底层传输始终为二进制数据。

    字节输出流

    java.IO.OutputStream(是一个抽象类)

    一个常用子类:FileOutputStream(文件字节输出流)

    作用:把内存中的数据写入硬盘文件

    子类构造法方法

    1.FileOutputStream(String name)(目的地是一个文件路径)

    2.FileOutputStream(File file) (目的地是一个文件)

    参数:写入文件的目的地 构造方法的作用:

    1.创建FileOutputStream对象

    2.根据构造方法中传递的文件/文件路径,创建一个空文件

    3.把对象指向创建好的文件

    写入数据的原理: java程序->JVM->OS->OS调用写数据的方法->把数据写入文件

    使用步骤:

    1.创建一个FileOutputStream对象,构造方法传递数据写入目的地

    2.调用FileOutputStream对象的write方法,把数据写入文件

    3.释放资源(调用close方法) (流使用会占用一定的内存,使用完毕以后清空内存,提高效率)

    // 文件存储原理和记事本打开文件

    硬盘中存储的数据都是二进制,任意的文本编辑器在打开文件时会查询编码表,把字节转化为字符表示 0-127:查询ASCII编码表 其他值:查询系统默认编码表

    数据的续写

    FileOutputStream类的构造方法

    FileOutputStream(String pathname ,boolean append), FileOutputStream(File file ,boolean append)

    参数boolean append 是追加开关

    true: 创建对象不会创建文件,在源文件后追加写入数据

    flase: 覆盖原文件

    代码学习

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class DemoByte02 {
        public static void main(String[] args) throws IOException {
            File file = new File("Month"+File.separator+"src"+File.separator+
                                "LearnIO"+File.separator+"write1.txt");
            //相对文件路径
           
            FileOutputStream fos =new FileOutputStream(file);
            byte[] bt={97,98,99};
            fos.write(bt);
            fos.flush();
            fos.close();
            //writestr(fos,"hellow,world");
            //在源文件后追加写入数据
            /*File file = new File("Month"+File.separator+"src"+File.separator+
                    "LearnIO"+File.separator+"write.txt");
         FileOutputStream fos =new FileOutputStream(file,true);
            writestr(fos,"、
    i'am java
    多	多	关	照");*/
        }
    
        //写入字符串的方法
        public static void writestr(FileOutputStream fos,String str) throws IOException {
            byte[] bt = str.getBytes();
            //将字符串转化为字节数组
            fos.write(bt);
            fos.flush();;
            fos.close();
        }
    }

    字节输入流InputStream

    其一个子类:FileInputStream(文件字节输入流)

    作用:把硬盘数据文件读取到内存中

    构造方法

    FileInputStream(String pathname);FileInputStream(File file)

    参数:读取文件数据源

    作用:

    1.创建FileInputStream对象

    2.把该对象指向构造方法要读取的文件

    读取数据的原理 java程序->JVM->OS->OS读取数据的方法->读文件

    使用步骤

    1.创建一个FileInputStream对象,构造方法传递数据读取目的地

    2.调用FileInputStream对象的read方法,读取数据

    3.释放资源(调用close方法)

    代码练习

    public static void main(String[] args) throws IOException {
          File file = new File("Month"+File.separator+"src"+File.separator+
                  "LearnIO"+File.separator+"write1.txt");
          FileInputStream fis =new FileInputStream(file);
    //read方法:int read();返回值为读到的数据,读完数据返回-1
          //int read(byte[] byte);int read(byte[] byte,int off,int,len);
          //一次读取多个数据,返回值为读到的有效字节数,读完数据返回-1
    
          byte[] bt=new byte[3];
          int a= fis.read(bt);//会把读到的数据存入传入的字节数组
          System.out.println(a);
          //System.out.println(fis.read());
          System.out.println(new String(bt));//将读到的多个字节数据按字符串格式输出
      }
  • 相关阅读:
    Python异常处理
    Python 线程、进程和协程
    python版本升级及pip部署方法
    Python socket编程
    循环遍历方法笔记
    TCP/IP协议分为哪四层,具体作用是什么。
    Python Paramiko模块与MySQL数据库操作
    Python面向对象编程(二)
    h5专题常用小代码
    sethc问题
  • 原文地址:https://www.cnblogs.com/susexuexi011/p/13944381.html
Copyright © 2011-2022 走看看