前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java字节流和字符流

java字节流和字符流

原创
作者头像
堕落飞鸟
发布2023-04-02 15:02:52
7540
发布2023-04-02 15:02:52
举报
文章被收录于专栏:飞鸟的专栏

Java中的I/O操作可以分为两种类型:字节流和字符流。字节流用于处理二进制数据,而字符流用于处理文本数据。本文将详细介绍Java中的字节流和字符流,并给出相应的示例代码。

一、字节流

Java中的字节流主要用于处理二进制数据,如图像、音频和视频等。Java中的字节流主要分为InputStream和OutputStream两种类型。

InputStream

InputStream是Java中所有输入流的基类。InputStream中定义了许多方法用于读取字节。以下是InputStream中一些常用的方法:

  • int read(): 从输入流中读取一个字节的数据。如果已到达文件结尾,则返回-1。
  • int read(byte[] b): 从输入流中读取最多b.length个字节的数据,并将其存储到缓冲区b中。返回实际读取的字节数。
  • int available(): 返回可以从输入流中读取的字节数。

下面是一个从文件中读取数据并将其显示在控制台上的示例:

代码语言:javascript
复制
import java.io.*;

public class InputStreamExample {
    public static void main(String[] args) throws IOException {
        InputStream in = new FileInputStream("test.txt");
        int b;
        while ((b = in.read()) != -1) {
            System.out.print((char) b);
        }
        in.close();
    }
}

在上述示例中,我们使用FileInputStream打开一个文件,并使用read()方法读取文件中的每一个字节,并将其显示在控制台上。

OutputStream

OutputStream是Java中所有输出流的基类。OutputStream中定义了许多方法用于写入字节。以下是OutputStream中一些常用的方法:

  • void write(int b): 将指定的字节写入输出流中。
  • void write(byte[] b): 将指定的字节数组中的数据写入输出流中。
  • void flush(): 刷新输出流并强制写入所有缓冲的输出字节。

下面是一个将数据写入文件的示例:

代码语言:javascript
复制
javaCopy codeimport java.io.*;

public class OutputStreamExample {
    public static void main(String[] args) throws IOException {
        OutputStream out = new FileOutputStream("test.txt");
        String str = "Hello, world!";
        byte[] b = str.getBytes();
        out.write(b);
        out.close();
    }
}

在上述示例中,我们使用FileOutputStream打开一个文件,并使用write()方法将一个字符串转换为字节数组,然后将其写入文件中。

二、字符流

Java中的字符流主要用于处理文本数据。字符流可以直接处理Unicode字符,因此在处理中文等特殊字符时很方便。Java中的字符流主要分为Reader和Writer两种类型。

Reader

Reader是Java中所有读取字符流的基类。Reader中定义了许多方法用于读取字符。以下是Reader中一些常用的方法:

  • int read(): 从输入流中读取一个字符的数据。如果已到达文件结尾,则返回-1。
  • int read(char[] c): 从输入流中读取最多c.length个字符的数据,并将其存储到缓冲区c中。返回实际读取的字符数。

下面是一个从文件中读取数据并将其显示在控制台上的示例:

代码语言:javascript
复制
import java.io.*;

public class ReaderExample {
    public static void main(String[] args) throws IOException {
        Reader reader = new FileReader("test.txt");
        int c;
        while ((c = reader.read()) != -1) {
            System.out.print((char) c);
        }
        reader.close();
    }
}

在上述示例中,我们使用FileReader打开一个文件,并使用read()方法读取文件中的每一个字符,并将其显示在控制台上。

Writer

Writer是Java中所有写入字符流的基类。Writer中定义了许多方法用于写入字符。以下是Writer中一些常用的方法:

  • void write(int c): 将指定的字符写入输出流中。
  • void write(char[] c): 将指定的字符数组中的数据写入输出流中。
  • void flush(): 刷新输出流并强制写入所有缓冲的输出字符。

下面是一个将数据写入文件的示例:

代码语言:javascript
复制
import java.io.*;

public class WriterExample {
    public static void main(String[] args) throws IOException {
        Writer writer = new FileWriter("test.txt");
        String str = "Hello, world!";
        writer.write(str);
        writer.close();
    }
}

在上述示例中,我们使用FileWriter打开一个文件,并使用write()方法将一个字符串写入文件中。

三、字节流和字符流的区别

在Java中,字节流和字符流有以下区别:

处理的数据类型不同

字节流主要用于处理二进制数据,如图像、音频和视频等。字符流主要用于处理文本数据。

输入/输出方式不同

字节流以字节为单位进行读取和写入,而字符流以字符为单位进行读取和写入。

编码方式不同

字节流不关心数据的编码方式,可以处理任何类型的数据。而字符流必须使用特定的字符编码方式,如UTF-8或GBK,以正确地处理文本数据。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、字节流
    • InputStream
      • OutputStream
      • 二、字符流
        • Reader
          • Writer
          • 三、字节流和字符流的区别
            • 处理的数据类型不同
              • 输入/输出方式不同
                • 编码方式不同
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档