• IO_字节流_文件写入、写出


    概念

    流:流向,从一端到另一端     源头与目的地

    程序 与 文件、数组、网络连接、数据库 ——以程序为中心

    IO流分类

    1、按流向:输入流和输出流

    2、按数据:字节流:二进制——可以处理一切文件,包括 纯文本、doc、音频、视频等

                       字符流:文本文件——只能处理纯文本

    3、按功能:节点:包裹源头

                       处理:增强功能,提供性能

    字符流与字节流(重点)

    1、字节流

            输入流:InputStream  方法:read(byte[ ] b)、read(byte[ ] b,int off, int len)+close( )

            输出流:OutputStream  方法:write(byte[ ] b)、write(byte[ ] b,int off, int len)+flush( ) +close( )

    2、字符流

            输入流:Reader

            输出流:Writer

    1、举例

    举例:搬家——>读取文件
    1、关联房子——>建立与文件的联系
    2、选择搬家——>选择对应的流

    3、搬家

        a、卡车大小

        b、运输

    ——>

    读取 / 写出

        数组大小

        读取/写出

    4、打发over——>释放资源

    2、操作

    1)建立联系    File对象 源头

    2)选择流    文件输入流 InputStream FileInputStream

    3)操作    数组大小+read / write    byte[ ] car = new byte[1024] 

    4)  释放资源

    读取文件
    /**
     * 文件的读取
     * 1)建立联系    File对象
     * 2)选择流    文件输入流 InputStream FileInputStream
     * 3)操作    数组大小+read / write    byte[ ] car = new byte[1024]
     * 4)释放资源
     * @author 
     * @date 2018/5/27 20:41
     */
    public class Steam {
        public static void main(String[] args) {
    
            //1、建立联系
            String path = "F:/test/1.txt";
            File file = new File(path);
            //2、选择流
            InputStream is = null;//提高作用域
    
            {
                try {
                    is = new FileInputStream(file);
                    //3、操作——读取,不断的读取,缓冲数组
                    byte[] car = new byte[1024];
                    int len = 0;//接收实际读取的大小
                    //循环读取
                    while (-1!=(len = (is.read(car)))){//-1表示没有数据了
                        //输出 需要将字节数组转成字符串
                        String  str = new String(car,0,len);
                        System.out.println(str);
                    }
                } catch (FileNotFoundException e) {
                    System.out.println("文件不存在");
                    e.printStackTrace();
                } catch (IOException e) {
                    System.out.println("读取文件失败");
                    e.printStackTrace();
                }finally {
                    //4、释放资源
                    if (null!=is){
                        try {
                            is.close();
                        } catch (IOException e) {
                            System.out.println("关闭文件输入流失败");
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
    }
    

    写出文件

    2、操作

    1)建立联系    File对象 目的地

    2)选择流    文件输出流 OutputStream FileOutputStream

    3)操作    write( )+flush

    4)释放资源

    /**
     * 2、操作
     * 1)建立联系    File对象 目的地
     * 2)选择流    文件输出流 OutputStreams FileOutputStream
     * 3)操作    write( )+flush
     * 4)释放资源
     * @author 
     * @date 2018/5/27 21:01
     */
    public class OutputStreams {
        public static void main(String[] args) {
    
            //1)建立联系    File对象 目的地
            String path = "F:/test/1.txt";
            File file = new File(path);
            //2)选择流    文件输出流 OutputStreams FileOutputStream
            OutputStream os = null;
            try {
                //以追加的形式写出文件
                os = new FileOutputStream(file,true);//false表示覆盖,true表示追加
                //操作
                String str = "You are so excellent!";
                //字符串转字符数组
                byte[] bytes = str.getBytes();
                os.write(bytes);
    
                os.flush();//强制刷新出去
            } catch (FileNotFoundException e) {
                System.out.println("文件未找到");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("文件写出失败");
                e.printStackTrace();
            }finally {
                //4、释放资源
                if(null!=os){
                    try {
                        os.close();
                    } catch (IOException e) {
                        System.out.println("关闭输出流失败");
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    


  • 相关阅读:
    Tips & Tricks:Apache log4j简明教程(二)
    Tips & Tricks:Apache log4j简明教程(一)
    算法导论:字符统计问题
    算法导论:打印回旋数
    ASP.NET AJAX简明教程
    将博客搬至CSDN
    qemu使用copy-on-write(COW)磁盘
    QEMU使用virtio磁盘
    使用HAXM为QEMU for Windows加速
    在WSL中安装和运行Docker CE
  • 原文地址:https://www.cnblogs.com/huangzhe1515023110/p/9276043.html
Copyright © 2020-2023  润新知