📜  讨论Java.io(1)

📅  最后修改于: 2023-12-03 15:41:42.485000             🧑  作者: Mango

Java.io介绍

Java.io是Java中用于输入/输出的一个标准库。它提供了一组类和接口,用于读取和写入各种数据类型,如字节、字符、对象等等。在这篇文章中,我们将讨论Java.io库的一些常用类和方法。

常用类及其功能
InputStream

InputStream是Java.io库中一个用于读取字节流的抽象类。它定义了一组用于读取字节流的抽象方法,如read()、available()等等。下面是一个简单的InputStream的用法示例:

try (InputStream input = new FileInputStream("file.txt")) {
  int data = input.read();
  while (data != -1) {
    System.out.print((char) data);
    data = input.read();
  }
} catch (IOException e) {
  e.printStackTrace();
}

上面的例子中,我们使用了FileInputStream类来创建一个InputStream,然后通过read()方法读取字节流。如果读到的是文件末尾,read()会返回-1。需要注意的是,我们使用了Java 7中的try-with-resources语句,它可以帮助我们自动关闭资源。

OutputStream

OutputStream是Java.io库中一个用于写入字节流的抽象类。它定义了一组用于写入字节流的抽象方法,如write()、flush()等等。下面是一个OutputStream的用法示例:

try (OutputStream output = new FileOutputStream("file.txt")) {
  byte[] data = "Hello, world!".getBytes();
  output.write(data);
} catch (IOException e) {
  e.printStackTrace();
}

上面的例子中,我们使用了FileOutputStream类来创建一个OutputStream,然后通过write()方法写入字节流。需要注意的是,我们在写入之后使用了flush()方法将缓冲区内容刷新到磁盘中。

Reader

Reader是Java.io库中一个用于读取字符流的抽象类。它定义了一组用于读取字符流的抽象方法,如read()、skip()等等。下面是一个Reader的用法示例:

try (Reader reader = new FileReader("file.txt")) {
  int data = reader.read();
  while (data != -1) {
    System.out.print((char) data);
    data = reader.read();
  }
} catch (IOException e) {
  e.printStackTrace();
}

上面的例子中,我们使用了FileReader类来创建一个Reader,然后通过read()方法读取字符流。如果读到的是文件末尾,read()会返回-1。

Writer

Writer是Java.io库中一个用于写入字符流的抽象类。它定义了一组用于写入字符流的抽象方法,如write()、flush()等等。下面是一个Writer的用法示例:

try (Writer writer = new FileWriter("file.txt")) {
  String data = "Hello, world!";
  writer.write(data);
} catch (IOException e) {
  e.printStackTrace();
}

上面的例子中,我们使用了FileWriter类来创建一个Writer,然后通过write()方法写入字符流。需要注意的是,我们在写入之后使用了flush()方法将缓冲区内容刷新到磁盘中。

BufferedInputStream和BufferedOutputStream

BufferedInputStream和BufferedOutputStream是Java.io库中两个用于提供缓冲功能的类。它们分别是InputStream和OutputStream的子类,提供了一个缓冲区,可以显著提高读写效率。下面是一个BufferedInputStream和BufferedOutputStream的用法示例:

try (InputStream input = new BufferedInputStream(new FileInputStream("file.txt"));
    OutputStream output = new BufferedOutputStream(new FileOutputStream("new-file.txt"))) {
  byte[] data = new byte[1024];
  int length;
  while ((length = input.read(data)) != -1) {
    output.write(data, 0, length);
  }
} catch (IOException e) {
  e.printStackTrace();
}

上面的例子中,我们使用了BufferedInputStream和BufferedOutputStream来读写文件。需要注意的是,我们使用了InputStream的read(byte[] b)方法和OutputStream的write(byte[] b, int off, int len)方法来读写缓冲区。

总结

Java.io库是Java中非常重要的一个标准库,它提供了丰富的类和接口,可以方便地读写各种数据类型。在使用它的时候,我们需要仔细阅读文档,选择合适的类和方法来读写数据。同时,我们也需要注意一些IO操作的细节,如自动关闭资源、缓冲区的使用等等。