21xrx.com
2025-07-09 09:07:16 Wednesday
文章检索 我的文章 写文章
《JavaIO流:从入门到进阶》——探索文件操作的利器
2023-06-15 13:07:42 深夜i     15     0
JavaIO流 字节流 字符流 缓冲字符流

JavaIO流是Java编程中最基本也是最重要的部分之一。Java的文件/IO操作是通过流的方式实现的,而Java中的流分为字节流和字符流。本文将从入门到进阶全面介绍JavaIO流的应用,让你在文件操作方面拥有一把利器。

一、JavaIO流的分类

JavaIO流应当先分为两个大类,然后各自细分出若干个子类。它们如下:

1.字节流:用于处理8位字节,属于比较底层的IO操作,适用于处理字节或者二进制对象。

2.字符流:用于处理16位字符,提供了一种方便的文本操作方式(甚至是中文文本)。

二、字节流

1.FileInputStream和FileOutputStream

FileInputStream和FileOutputStream是JavaIO流读写文件的最基本、最常用的流,它们可以对文件进行读取和写入操作。下面是使用FileInputStream和FileOutputStream读写文件的代码案例:

public void fileStreamTest(){
  FileInputStream fis = null;
  FileOutputStream fos = null;
  try{
    fis = new FileInputStream("input.txt");
    fos = new FileOutputStream("output.txt");
    
    int len;
    byte[] buffer = new byte[1024];
    
    while((len = fis.read(buffer)) != -1){
      fos.write(buffer, 0, len);
    }
    
  }catch(IOException e){
    e.printStackTrace();
  }finally{
    try{
      fis.close();
      fos.close();
    }catch(IOException e){
      e.printStackTrace();
    }
  }
}

2.DataInputStream和DataOutputStream

DataInputStream和DataOutputStream是用于读写基本数据类型的流,可以将java中的基本类型转化为字节流,便于输出。下面是使用DataInputStream和DataOutputStream读写基本类型的代码案例:

public void dataStreamTest(){
  FileOutputStream fos = null;
  DataOutputStream dos = null;
  FileInputStream fis = null;
  DataInputStream dis = null;
  try{
    fos = new FileOutputStream("test");
    dos = new DataOutputStream(fos);
    
    dos.writeInt(123);
    dos.writeDouble(987.654);
    dos.writeBoolean(true);
    
    fis = new FileInputStream("test");
    dis = new DataInputStream(fis);
    
    int i = dis.readInt();
    double d = dis.readDouble();
    boolean b = dis.readBoolean();
    
    System.out.println(i);
    System.out.println(d);
    System.out.println(b);
    
  }catch(IOException e){
    e.printStackTrace();
  }finally{
    try{
      fis.close();
      dis.close();
      fos.close();
      dos.close();
    }catch(IOException e){
      e.printStackTrace();
    }
  }
}

三、字符流

1.FileReader和FileWriter

FileReader和FileWriter是JavaIO流读写文本文件的类,它们与FileInputStream和FileOutputStream不同的是,前者读写的是字符流,后者读写的是字节流。下面是使用FileReader和FileWriter读写文本文件的代码案例:

public void fileWriterTest(){
  FileWriter fw = null;
  try{
    fw = new FileWriter("output.txt");
    fw.write("Hello World!");
  }catch(IOException e){
    e.printStackTrace();
  }finally{
    try{
      fw.close();
    }catch(IOException e){
      e.printStackTrace();
    }
  }
}
public void fileReaderTest(){
  FileReader fr = null;
  try{
    fr = new FileReader("output.txt");
    char[] buffer = new char[1024];
    
    int len = fr.read(buffer);
    
    System.out.println(new String(buffer, 0, len));
  }catch(IOException e){
    e.printStackTrace();
  }finally{
    try{
      fr.close();
    }catch(IOException e){
      e.printStackTrace();
    }
  }
}

2.BufferedReader和BufferedWriter

BufferedReader和BufferedWriter是JavaIO流带缓冲的字符流处理方式,针对的是大量数据读写,读写速度较快。下面是使用BufferedReader和BufferedWriter读写文本文件的代码案例:

public void bufferedWriterTest(){
  BufferedWriter bw = null;
  try{
    bw = new BufferedWriter(new FileWriter("output.txt"));
    
    String s = "Hello World!你好,世界!\r\n";
    bw.write(s);
    bw.flush();
    
  }catch(IOException e){
    e.printStackTrace();
  }finally{
    try{
      bw.close();
    }catch(IOException e){
      e.printStackTrace();
    }
  }
}
public void bufferedReaderTest(){
  BufferedReader br = null;
  try{
    br = new BufferedReader(new FileReader("output.txt"));
    
    String line = null;
    while((line = br.readLine()) != null){
      System.out.println(line);
    }
  }catch(IOException e){
    e.printStackTrace();
  }finally{
    try{
      br.close();
    }catch(IOException e){
      e.printStackTrace();
    }
  }
}

四、总结

JavaIO流在Java中是一项非常重要的基础技能,掌握它可以让你更好地进行文件和IO操作。通过本文对JavaIO流的介绍,你应该已经对流的分类、字节流、字符流以及缓冲字符流有了一个较为深入的了解,相信这些知识会在你以后的开发过程中得到实际的应用。

  
  

评论区

    相似文章