欢迎访问宙启技术站
智能推送

Java中如何实现文件输入和输出的相关函数?

发布时间:2023-06-23 15:57:41

Java中实现文件输入和输出,需要使用Java的IO流(Input/Output Streams)类库。在Java中,IO流是指用于数据输入和输出的类集,包含了一套输入流和输出流。

Java的IO流类库包含了如下的类:

1. 字节流(Byte Streams)

字节流是以字节为单位进行数据传输的流,使用InputStream和OutputStream类来实现。InputStream类是抽象类,其子类包括ByteArrayInputStream,FileInputStream,PipedInputStream等。而OutputStream类也是抽象类,其子类包括ByteArrayOutputStream,FileOutputStream,PipedOutputStream等。

2. 字符流(Character Streams)

字符流是以字符为单位进行数据传输的流,使用Reader和Writer类来实现。Reader类是抽象类,其子类包括BufferedReader,InputStreamReader,PipedReader等。Writer类也是抽象类,其子类包括BufferedWriter,OutputStreamWriter,PipedWriter等。

接下来我们将会详细介绍如何在Java中实现文件输入和输出的相关函数。

1. 文件输入

在Java中,要想读取文件中的数据,需要使用InputStream类和它的子类FileInputStream来实现。FileInputStream类是InputStream类的一个子类,用于读取文件数据流。

例子1:

import java.io.*;
public class FileInputTest {
  public static void main(String args[]) {
    try {
      FileInputStream input = new FileInputStream("c:/data.txt");
      int data;
      while ((data = input.read()) != -1) {
        System.out.print((char) data);
      }
      input.close();
    } catch (IOException e) {
      System.out.println("错误:" + e.getMessage());
    }
  }
}

在上述代码中,我们首先创建一个FileInputStream对象input,用于读取数据。然后通过while循环逐个读取文件中的数据,直到读取到文件末尾(即read()方法返回-1)。最后关闭流对象input。

2. 文件输出

在Java中,要想将数据写入到文件中,需要使用OutputStream类和它的子类FileOutputStream来实现。FileOutputStream类是OutputStream类的一个子类,用于向文件数据流中写入数据。

例子2:

import java.io.*;
public class FileOutputTest {
  public static void main(String args[]) {
    try {
      FileOutputStream output = new FileOutputStream("c:/test.txt");
      byte[] data = "Hello World".getBytes();
      output.write(data);
      output.close();
    } catch (IOException e) {
      System.out.println("错误:" + e.getMessage());
    }
  }
}

在上述代码中,我们首先创建一个FileOutputStream对象output,用于写入数据。然后将字符串“Hello World”转换为byte数组,并通过write()方法将数据写入到文件中。最后关闭流对象output。

3. 缓冲读取

为了提高文件读取和输出的性能,我们可以使用BufferedInputStream和BufferedOutputStream这两个类来进行缓冲读取和输出。

例子3:

import java.io.*;
public class BufferedInputTest {
  public static void main(String args[]) throws Exception {  
    FileInputStream fis = null;  
    BufferedInputStream bis = null;  
    try {  
        fis = new FileInputStream("c:/data.txt");  
        bis = new BufferedInputStream(fis);  
        byte[] data = new byte[1024]; 
        int len;
        while ((len = bis.read(data)) != -1) {  
            System.out.write(data, 0, len);  
        }  
    } finally {  
        if (bis != null) bis.close();  
        if (fis != null) fis.close();  
    }  
  }  
}

在上述代码中,我们通过BufferedInputStream和FileInputStream来进行读取操作,并在while循环中读取文件中的数据,并将其存储在byte数组data中,然后输出到控制台。

4. 缓冲输出

同样,在进行文件输出操作时,我们也可以使用BufferedOutputStream类来实现缓存写入操作。

例子4:

import java.io.*;
public class BufferedOutputTest {
  public static void main(String[] args) throws IOException {
    FileOutputStream fos = null;  
    BufferedOutputStream bos = null;  
    try {  
      fos = new FileOutputStream("c:/test.txt");  
      bos = new BufferedOutputStream(fos);  
      String data = "Hello World"; 
      bos.write(data.getBytes());  
    } catch (IOException e) {  
      e.printStackTrace();  
    } finally {  
      if (bos != null) bos.close();   
      if (fos != null) fos.close();  
    }  
  }  
}

在上述代码中,我们通过BufferedOutputStream和FileOutputStream来进行写入操作,并将字符串“Hello World”转换为byte数组然后使用write()方法将其输出到文件中。

总结:

在Java中实现文件的输入和输出,需要用到Java的IO流,其中InputStream和OutputStream类用于分别进行文件的读取和输出。为了提高读取和输出的性能,我们还可以使用缓冲读取和缓冲输出的方法,分别使用BufferedInputStream和BufferedOutputStream类进行实现。