Java IO


目录

Java I/O简介

Java I/O分类

字节流

字符流

Java I/O之NIO

Java I/O异常处理

结论


Java I/O简介

Java中的I/O(Input/Output)指的是将数据从一个地方传输到另一个地方的过程。在Java中,数据可以来自各种来源,例如网络、文件和用户输入等。I/O是Java应用程序开发的重要部分,可以让我们读取和写入文件、从网络上下载数据等。

Java I/O分类

Java I/O主要分为两类:

字节流和字符流。

字节流以字节作为单位进行操作,而字符流以字符作为单位进行操作。具体来说,字节流是一系列8位字节的顺序组合,而字符流是由16位Unicode字符组成的。

字节流

字节流用于处理二进制数据,例如图片、音频和视频等文件。

在Java中,InputStream和OutputStream是字节流的抽象类。

InputStream定义了用于读取字节的方法,而OutputStream定义了用于写入字节的方法。

下面是一个使用FileInputStream读取文件内容的示例代码:

```
File file = new File("file.txt");
try (FileInputStream inputStream = new FileInputStream(file)) {
    int ch;
    while ((ch = inputStream.read()) != -1) {
        System.out.print((char) ch);
    }
} catch (IOException e) {
    e.printStackTrace();
}
```

这段代码打开了一个名为“file.txt”的文件,并使用FileInputStream将其中的内容读取出来。FileInputStream.read()方法将读取一个字节并返回它的值,如果已经到达文件的末尾,则返回-1。

字符流

字符流用于处理文本数据,例如文本文件、HTML文件等。在Java中,Reader和Writer是字符流的抽象类。Reader定义了用于读取字符的方法,而Writer定义了用于写入字符的方法。

下面是一个使用BufferedReader读取文件内容的示例代码:

```
File file = new File("file.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
```

这段代码打开了一个名为“file.txt”的文件,并使用BufferedReader逐行读取其内容。BufferedReader.readLine()方法将读取一行文本并返回它的值,如果已经到达文件的末尾,则返回null。

Java I/O之NIO

Java NIO(New IO)是Java 1.4引入的一种新的I/O API。与原始的I/O API相比,Java NIO提供了更高效、更灵活的I/O操作方式。在Java NIO中,主要有以下四个核心组件:

1. Buffer(缓冲区):缓冲区是一个对象,用于存储数据。在Java NIO中,所有数据都从缓冲区读取,也都写入到缓冲区。缓冲区使用的是内存块,而不是像传统的I/O一样直接从文件或网络中读取。

2. Channel(通道):通道是可进行读写操作的对象,类似于流。在Java NIO中,提供了各种类型的通道,例如FileChannel、SocketChannel和ServerSocketChannel等。每种通道都有其专门的功能。

3. Selector(选择器):选择器用于监听多个通道的事件(例如连接打开、数据到达等),因此可以使用较少的线程来处理多个通道。这也是Java NIO比原始I/O更快的原因之一。

4. Charset(编码集):Charset用于将字符序列转换为字节序列,反之亦然。Java NIO提供了很多不同的Charset实现,例如UTF-8、GBK和ISO-8859-1等。

Java I/O异常处理

在Java I/O编程中,处理异常是必不可少的。任何一个I/O操作都可能会失败,例如文件不存在、连接超时等情况。因此,在进行I/O操作时应该总是尝试处理可能发生的异常。

下面是一个示例代码:

```
File file = new File("file.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (FileNotFoundException e) {
    System.err.println("File not found: " + file.getPath());
} catch (IOException e) {
    e.printStackTrace();
}
```

这段代码读取名为“file.txt”的文件,并在文件不存在或读取出错时打印出错误信息。这里使用了Java的异常处理机制来捕获并处理异常。在这种情况下,如果文件不存在,则抛出FileNotFoundException,而如果读取文件时发生错误,则抛出IOException。

结论

Java I/O是Java应用程序开发中非常重要的一部分。在本文包括Java I/O的基础知识,包括字节流和字符流、Java NIO和异常处理等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值