IO流(2021-11-15)

1.1 IO流的概述

**
IO(Input/Output),本质是数据传输。

IO流的分类:
按照数据的流向:输入流(读数据)、输出流(写数据)。
按照字节类型:

  • 字节流:字节输入流、字节输出流
  • 字符流:字符输入流、字符输出流

IO流的使用场景:

  • 如果用电脑自带的记事本打开文件是我们可以读懂的话,优先使用字符流。
  • 如果是读不懂的话,优先使用字节流。字节流是万能流

**

1.2字节流写数据

**
步骤:
1.创建字节流对象

FileOutputStream fos = new FileOutputStream(String name);

2.调用字节输出流对象的写数据方法
有三种方法:

void write(int b)
void write(byte[] b)
void write(byte[] b,int off,int len)`

3.释放资源

fos.close()

**注:**写数据的两个小问题:
1.字节流写数据如何实现换行

  • Windows系统:fos.write("\r\n")
  • linux系统:fos.write(“\n")
  • mac系统:fos.write("\r")
    2.如何实现追加写入文件的末尾
FileOutputStream fos = new FileOutputStream(String name,boolean true);

**

1.3字节流写数据加异常处理**

为保证IO流中的释放资源,加入finally块。被finally控制的语句一定会执行,除非jvm退出。
异常处理格式为

try{
    
    
可能出现异常的代码;
}catch(异常类名 变量名){
    
    
    异常处理的代码;
 }finally{
    
    
    执行所有清除操作;
  }

**

1.4字节流读数据**

步骤:

1.字节输入流写数据

FileInputStream fis  = new FileInputStream("myByteStream\\fos.txt");
  1. //写数据
  int read;
     /*
      1.fis.read()读数据
      2.将读到的数据赋值给read
      3.判断read是否等于-1
      */
     //一次读取一个字节数据
  while((read = fis.read() )!= -1){
    
    
    System.out.print((char)read);
   }
  //一次读取一个字节数组
  byte[] bys = new byte[1024];
  int len;
  while((len = fis.read(bys)) != -1){
    
    
     System.out.print(new String(bys,0,len));
   }
  1. //释放资源
  fis.close();

1.5字节缓冲流

  • BufferOutputStream该类实现缓冲输出流,其爷爷类是OutputStream.通过这样设置,可以设置一个缓冲区,将来数据一次性写入文件中,减少底层调用的次数。
  • BufferInputStream该类实现缓冲输入流,其爷爷类是InputStream。内部缓冲区一次性可以读取多个字节。
    字节缓冲流可以提高数据读取的效率。

构造方法:

BufferedOutputStream(OutputStream out)
BufferedInputStreamInputStream in)

猜你喜欢

转载自blog.csdn.net/weixin_42226721/article/details/121327989