io流

复习

ORM思想(数据库和类中的属性一一对应的关系)

所以类中定义了泛型

File在Test和main方法中创建所放的路径是不一样的

IO流

根据数据类型分为字节流和字符流

根据流向分为输入流和输出流

根据角色分为字节流和处理流

FileInputStream

FileOutputStream

FileReader

FileWriter

使用Read()读入数据

read()读入数据放回一个字符,如果读完就返回一个-1

实例化文件的时候必须存在否则就会报错FileNotFoundException

read()可以传参一个字符数组,能够提高效率

Writer

  • 实例化文件

  • 实例化io流

  • 写出写出操作

  • 关闭io流

FileWriter后面有一个追加参数

false :覆盖原有文件

true :写在原有文件的后面

复制字节流的文件


import java.io.*;

public class TestInputOutputStream {


   @Test
   public void InputOutputStream() {
       FileInputStream inputStream = null;
       FileOutputStream outputStream = null;
       try {
           //创建文件
           File srcFile = new File("身份证反面.jpg");
           File destFile = new File("身份证反面1.jpg");
           //创建io流
           inputStream = new FileInputStream(srcFile);
           outputStream = new FileOutputStream(destFile);
           //完成复制操作
           byte[] buffer =new byte[5];
           int len;
           while ((len = inputStream.read(buffer)) != -1){
               outputStream.write(buffer,0,len);
          }
           //关闭io流
      } catch (IOException e) {
           e.printStackTrace();
      } finally {
           if(inputStream != null){
               try {
                   inputStream.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }
           if(outputStream != null){
               try {
                   outputStream.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }

      }
  }
}

字符流操做,.txt,.java文件

字节流操作其他文件

Buffered缓冲流



import org.junit.jupiter.api.Test;

import java.io.*;

public class Buffer {

   @Test
   public void Buffer() {
       BufferedInputStream bis = null;
       BufferedOutputStream bos = null;
       try {
           //文件
           File src = new File("身份证反面.jpg");
           File dest = new File("身份证反面.jpg");
           //节点流
           FileInputStream fis = new FileInputStream(src);
           FileOutputStream fos = new FileOutputStream(dest);
           //缓冲流
           bis = new BufferedInputStream(fis);
           bos = new BufferedOutputStream(fos);
           //复制
           byte[] buffer=new byte[1024];
           int len;
           if ((len = bis.read(buffer)) != -1){
               bos.write(buffer,0,len);
          }
      } catch (IOException e) {
           e.printStackTrace();
      } finally {
           if (bis != null){
               try {
                   bis.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }
           if (bos != null){
               try {
                   bos.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }
      }
       //关流
       
  }
}

转换流



import org.junit.jupiter.api.Test;

import java.io.*;

public class Test4 {
   @Test
   public void TestInputStreamReader() throws IOException {
       FileInputStream fis = new FileInputStream(new File("src//13.txt"));
       FileOutputStream fos = new FileOutputStream(new File("src//16.txt"));
       InputStreamReader fsr = new InputStreamReader(fis);
       OutputStreamWriter osw = new OutputStreamWriter(fos,"utf-8");

       //编码格式转换
       int len;
       char[] cbuf= new char[1024];
       while ((len = fsr.read(cbuf)) != -1){
           osw.write(cbuf,0,len);
      }

       fsr.close();
       osw.close();
  }
}

字符集

ASCII 美国标准信息交换码

ISO8859—1 :拉丁码表。欧洲码表

GBK :中国的中文编码表

Unicode:国际标准码

UFT-8:变长的编码格式

键盘输入

System.in



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test5 {
   public static void main(String[] args) {
       System.out.println(readInt());
  }

   public static int readInt() {
       BufferedReader br = null;
       String data = null;
       try {
           InputStreamReader isr = new InputStreamReader(System.in);
           br = new BufferedReader(isr);
           while (true) {
               data = br.readLine();
               if (data.equalsIgnoreCase("e") || data.equalsIgnoreCase("exit")) {
                   return 0;
              }
          }
      } catch (IOException e) {
           e.printStackTrace();
      } finally {
           if (br != null) {
               try {
                   br.close();
              } catch (IOException e) {
                   e.printStackTrace();
              }
          }
      }
       return Integer.parseInt(data);
  }
}

打印流


mport java.io.*;

public class Test {
  @org.junit.jupiter.api.Test
  public void TestPrintStearm(){
      PrintStream ps = null;
      try {
          ps = new PrintStream((new FileOutputStream(new File("D:\\io\\14.txt"))),true);
          if (ps != null){
              System.setOut(ps);
          }
          for (int i = 0; i < 200; i++) {
              System.out.print(i);
          }
      } catch (FileNotFoundException e) {
          e.printStackTrace();
      } finally {
      if (ps != null){
          ps.close();
      }
      }

  }
}

 

posted @ 2022-03-14 06:40  亚托克斯的泯灭  阅读(119)  评论(0)    收藏  举报