📅  最后修改于: 2023-12-03 15:41:42.485000             🧑  作者: Mango
Java.io是Java中用于输入/输出的一个标准库。它提供了一组类和接口,用于读取和写入各种数据类型,如字节、字符、对象等等。在这篇文章中,我们将讨论Java.io库的一些常用类和方法。
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是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是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是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是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操作的细节,如自动关闭资源、缓冲区的使用等等。