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

    当不同的介质之间有数据交互的时候 JAVA就使用流来实现  数据源可以是文件 还可以是数据库 网络甚至是其他的程序  比如 站在程序的角度来看就叫做输入流 反之就是输出流

    # ## IO流的分类  

    根据按照流向可分为:输入流(读取文件的数据到程序中 读取数据)和输出流(读取程序的数据写出到文件中 写出数据)  
    根据按照数据类型可分为:字节流(传输数据的最基本单位是字节的流)和字符流(传输过程中 传输数据的最基本单位是字符的流)

    字节流可分为:字节输入流(读取数据  InputStream)和字节输出流(写出数据  OutputStream)    以Stream结尾大多数是字节流

    字符流可分为:字符输入流(读取数据  Reader)和字符输出流(写出数据  Writer)  

     

    # ## InputStream

    InputStream 是所有的输入字节流的父类 它是一个抽象类 其子类包括  ByteArrayInputStream  StringBufferInputStream  FileInputStream  分别从Byte 数组 StringBuffer 和本地文件中读取数据  PipedInputStream是从与其它线程共用的管道中读取数据

    字节流读取数据方式有两种  

    int read()  一次读取一个字节

        @Test
        public void readDate() throws IOException {
            FileInputStream fis = new FileInputStream("FileOutputStreamDemo.java");
            // //通过测试 读取的数据是-1 说明已经读取到文件的末尾了
            int by = 0;
            // 读取,赋值,判断
            while ((by = fis.read()) != -1) {
                System.out.print((char) by);
            }
            // 释放资源
            fis.close();
    }

    使用流的时候一定要最后close() 有两个原因  1.让流对象变成垃圾 这样就可以被垃圾回收器回收了  2.通知系统去释放跟该文件相关的资源

    int read(byte[] b)  一次读取一个字节数组

        @Test
        public void readDate2() throws IOException {
            FileInputStream fis = new FileInputStream("FileOutputStreamDemo.java");
            byte[] bys = new byte[1024];
            int len = 0;
            while ((len = fis.read(bys)) != -1) {
                System.out.print(new String(bys, 0, len));
            }
            // 释放资源
            fis.close();
        }

    # ## OutStream

    FileOutputStream构造:
       FileOutputStream(File file)   参数为文件路径
              FileOutputStream(String name) 参数为文件名 当前项目的跟目录下

      @Test
        public  void write() throws IOException {
            FileOutputStream fos = new FileOutputStream("d://fos.txt");
            //写数据
            fos.write("hello,IO".getBytes());
            fos.write("java".getBytes());
            fos.close();
        }

    public void write(int b)   写一个字节

        @Test
        public  void write() throws IOException {
           // 创建字节输出流对象
           FileOutputStream fos = new FileOutputStream("fos.txt");
           int text= 98;
           // 调用write()方法
           fos.write(text); 
        }    

    public void write(byte[] b)  写一个字节数组

        @Test
        public  void write() throws IOException {
           // 创建字节输出流对象
           FileOutputStream fos = new FileOutputStream("fos1.txt");
           byte[] bys={97,98,99,100,101};
           fos.write(bys);
        }    


    public void write(byte[] b,int off,int len)   写一个字节数组的一部分

       @Test
        public  void write() throws IOException {
           // 创建字节输出流对象
           FileOutputStream fos = new FileOutputStream("fos1.txt");
           byte[] bys={97,98,99,100,101};
           fos.write(bys,1,3);
        }    
    
    
    
     
  • 相关阅读:
    CentOS 7 使用NVM管理nodejs(转)
    Linux下Git安装及配置 (转)
    linux添加计划任务(转载)
    centos编译libcurl库找不到ssl的问题
    windows下搭建nginx+php+虚拟主机配置过程(转)
    xocde中宏定义使用
    unity shader vs高亮提示插件
    xcode8 自动打包
    3DMax中如何刷顶点色
    Adreno Profiler调试注意事项
  • 原文地址:https://www.cnblogs.com/renxixao/p/11456699.html
Copyright © 2011-2022 走看看