IO流

问题1:IO流一定要关闭么?

问题2:字符流和字节流使用上有什么区别?

问题3:IO流分哪几种?

一、思维导图

    前言:IO流都为对文件操作,所以IO流都需要使用File类

String filePath="/Users/text.txt";
File file = new File(filePath);
file.isDirectory();//判断是否为文件夹
File files[] = file.listFiles();//获取路径下的所有文件&文件夹

 

 

 

 

 一、缓冲流--最常用

1、字符缓冲流(BufferedReader&BufferedWriter)

    String filePath = "/Users/haoc/course/code/cakes-course/0.notes/day01.md";
    File file = new File(filePath);
    BufferedReader reader = null;
    try {
      reader = new BufferedReader(new FileReader(file));//不一样的地方

      String res;
      StringBuilder sb = new StringBuilder();
      while ((res = reader.readLine()) != null) {
        sb.append(res).append("\n");
      }

      String val = sb.toString();

      System.out.println("val = " + val);
    } catch (FileNotFoundException e) {
      System.out.println("这个文件不存在呀," + e.getMessage());
      throw new RuntimeException(e);
    } catch (IOException e) {
      System.out.println("文件读取失败了," + e.getMessage());
      throw new RuntimeException(e);
    } finally {
      if (null != reader) {
        try {
          reader.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

  

2、字节缓冲流(BufferedInputStream&BufferedOutputStream)

 

二、字符流(FileReader&FileWriter)

public static void normalReader1() {
    String filePath = "/Users/haoc/course/code/cakes-course/0.notes/day01.md";
    File file = new File(filePath);
    Reader reader = null;
    try {
      reader = new FileReader(file);

      int len;
      char[] buf = new char[256];

      StringBuilder sb = new StringBuilder();
      while ((len = reader.read(buf)) != -1) {
        String str = new String(buf, 0, len);
        sb.append(str);
      }

      String val = sb.toString();

      System.out.println("val = " + val);
    } catch (FileNotFoundException e) {
      System.out.println("这个文件不存在呀," + e.getMessage());
      throw new RuntimeException(e);
    } catch (IOException e) {
      System.out.println("文件读取失败了," + e.getMessage());
      throw new RuntimeException(e);
    } finally {
      if (null != reader) {
        try {
          reader.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

 

 //FileWrite
    public void FileWrite(){
        File file =new File("");
        FileWriter fileWriter=null;
        byte[] result =new byte[256];
        try {
            fileWriter=new FileWriter(file);
            fileWriter.write(result.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(fileWriter !=null){

            }
        }

    }

  

三、字节流(InputSream&OutputStream)

 public static void normalRead1() {
    String filePath = "/Users/haoc/course/code/cakes-course/0.notes/day01.md";

    InputStream ins = null;
    try {
      File file = new File(filePath);
      ins = new FileInputStream(file);

      int len;
      byte[] buf = new byte[256];

      StringBuilder sb = new StringBuilder();
      while ((len = ins.read(buf)) != -1) {
        String str = new String(buf, 0, len);
        sb.append(str);
      }
    } catch (FileNotFoundException e) { // if e == FileNotFoundException
      System.out.println("这个文件不存在呀," + e.getMessage());
      throw new RuntimeException(e);
    } catch (IOException e) {
      System.out.println("文件读取失败了," + e.getMessage());
      throw new RuntimeException(e);
    } finally {
      if (null != ins) {
        try {
          ins.close();
        } catch (IOException e) {
          System.out.println("流关闭失败了," + e.getMessage());
        }
      }
    }

 

  public static void testWriteFile1() throws Exception {
    String filePath = "/Users/haoc/course/temp/xxxx.md";
    File file = new File(filePath);
    OutputStream ous = new FileOutputStream(file);

    for (int i = 0; i < 1000; i++) {
      String str = "hello java io" + i + "\n";
      ous.write(str.getBytes());
    }

    ous.flush();
  }

  

 


posted @ 2020-05-18 09:59  可可的私房菜  阅读(162)  评论(0编辑  收藏  举报