文本IO与二进制IO

引言

为什么详细描述着一段,因为一直以来并未思考过这个问题。

Java提供了许多类用于实现文本IO和二进制IO

文件可以分为文本和二进制的。

可以使用文本编辑器,比如windows下的记事本或linux下的vi编辑器,进行处理的文本称为文本文件。
所有其他的文件称为二进制文件。
不能使用文本编辑器来读取的二进制文件–他们被设计为使用程序来读取。

举例:
Java源程序存储在文本文件中,可以使用文本编辑器读取,而Java类文件是二进制文件,由Java虚拟机读取。

文本文件是由字符序列构成的,而二进制文件是由==位(bit)==序列构成的。

文本文件中的字符使用某种字符编码模式(例如ASCII编码或者Unicode编码)来进行编码。而二进制文件是以字节类型的值存储的。二进制文件的优势在于它处理效率比文本文件高。

Java提供了许多实现文件输入、输出的类。这些类可以分为text IO class和binary IO class。

在Java中如何读取文本IO

使用Scanner类读取文本数据,使用PrintWriter类写文本数据。

File对象封装了文件或者路径属性,但是不包含向文件读写数据的方法。
为了进行IO操作,需要使用正确的Java IO类创建对象。这些对象包含向文件读写数据的方法。

 public static void main(String[] args) throws FileNotFoundException {
    PrintWriter printWriter = new PrintWriter("d:\\test.txt");
    printWriter.print("中华人民共和国万岁!!!!!!!!!!!!!!!!");
    printWriter.close();

    Scanner input = new Scanner(new File("d:\\test.txt"));
    System.out.println(input.nextLine());
    input.close();
  }

在这里插入图片描述

文本IO和二进制IO

二进制IO不涉及编码和解码,因此比文本IO更加高效。

计算机并不区分二进制文件和文本文件,所有的文件都是以二进制形式来存储的,因此,从本质上来说,所有的文件都是二进制文件。

文本IO建立在IO的基础上,它能提供一层抽象,用于字符的编码和解码。

对于文本IO而言,编码和解码是自动进行的。

在写入字符时,Java虚拟机会将Unicode码转化为文本特定的编码,而在读取字符时,将文件特定的编码转化为Unicode码。

199对应十六进制分别是0x31\0x39\0x39 解码后写入流。

二进制IO不需要转化,如果使用二进制IO想文件写入一个数值,就是将内存中的那个值复制到文件中。

一般来说,对于文本编辑器或者文本输出程序创建的文件,应该使用文本输入来读取,对于Java二进制输出程序创建的文件,应该使用二进制输入来读取。

由于二进制IO不需要编码和解码,所以,它比文本IO效率高。

二进制文件与主机的编码方案无关,因此,它是可移植的。任何机器上的Java程序都可以读取java程序所创建的二进制文件。这就是为什么Java的类文件存储为二进制文件的原因。Java类文件可以在任何具有Java虚拟机的机器上运行。

发布了156 篇原创文章 · 获赞 11 · 访问量 5357

猜你喜欢

转载自blog.csdn.net/weixin_38280568/article/details/103899267