zoukankan      html  css  js  c++  java
  • IO的学习与使用

    一、IO的学习方法:IO中包含了很多的类,推荐的学习方式是:“举一反三,掌握一种,以此类推”。

    二、I/O操作的目标:

    输入:从数据源(在数据源和程序之间建立的一个数据流淌的“管道”)中读取数据(文件、键盘、网络……)

    输出:将数据写入到数据目的地当中(文件、屏幕、网络……)

    注意:输入和输出是一个流向问题,从一个数据源读取数据到“java程序中”;从java程序输出数据到其他地方。输出输入相对于java程序本身

    三、IO分类

    一、第一种分法

    1、 输入流

    2、 输出流

    二、第二种分法

    1、字节流

    2、字符流

    三、第三种分法

    1、节点流(普通的水管)

    2、处理流(普通的水管+在水管外面再加一层):在节点流的基础上对数据做进一步处理

    四、字节流与字符流

    字节流:

    1、InputStream/OutputStream是是所有字节输入流/输出流的父类,在Java的I/O流中所有对字节流处理的类,字节流都继承自InputStream类和OutputStream类,这是两个抽象类。

    2、字节流示例:

    public static void main(String[] args) {
    FileInputStream fileInputStream=null;
    FileOutputStream fileOutputStream=null;
    try{
    fileInputStream=new FileInputStream("e:/a.txt");
    fileOutputStream=new FileOutputStream("e:/b.txt");
    byte[] buffer=new byte[1024];
    while (true){
    int temp=fileInputStream.read(buffer,0,buffer.length);
    if(temp==-1){
    break;//跳出当前循环
    }
    //读取a文件中的数据
    fileOutputStream.write(buffer,0,temp);
    }
    }catch (Exception e){
    System.out.println("111");
    }
    finally {
    try{
    fileInputStream.close();
    fileOutputStream.close();
    }catch (Exception e){
    System.out.println("读取文件失败");
    }
    }}

    字符流:

    1、Reader/Writer是是所有字节输入流/输出流的父类,在Java的I/O流中所有对字符流处理的类,字符流都继承自InputStream类和OutputStream类,这是两个抽象类。

    2、使用示例:

    public static void main(String[] args) {
    FileReader fr=null;
    BufferedReader br=null;
    BufferedWriter bw=null;
    try{
    fr=new FileReader("e:/a.txt");
    br=new BufferedReader(fr);
    String line=null;
    while (true){
    line=br.readLine();
    if(line==null){
    break;
    }
    System.out.println(line);
    }
    }catch (Exception e){
    System.out.println("文件读取失败");
    }finally {
    try{
    fr.close();
    }catch (Exception e){
    System.out.println("444");
    }


    }
    }

    五、节点流和处理流

    这里涉及到“装饰者模式”设计,具体见:https://i.cnblogs.com/EditPosts.aspx?opt=1

  • 相关阅读:
    dotnet run urls=http://*:8080
    内敛声明变量
    C#反射赋值(更新时用)
    mysql---auto_increment=10啥意思呢?
    vscode--代码折叠与展开
    联想启天M410台式机的清除BIOS密码
    AntD是什么?
    react-router-dom 中文文档
    Recoil是什么?
    sql server查看建表的创建代码?
  • 原文地址:https://www.cnblogs.com/kelly-one/p/7859983.html
Copyright © 2011-2022 走看看