Java 输入/输出(I/O)机制提供了一套简单的,标准化的API以便从不同的数据源读取和写入字符和字节数据。在“
面向对象编程:Java collection更有效管理elements”一文中,我们讨论了Java 集合类架构中的类和功能并介绍了它的排序功能。在本文中,我们将学习Java 平台提供的这些I/O类,接口和操作。让我们先从了解Java 数据流开始。
数据流
Java所有的I/O机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。
Java.io是大多数面向数据流的输入/输出类的主要软件包。这个软件包包含了两个抽象类,InputStream和OutputStream。所有其它面象数据流的输入/输出类都要扩展这两个基类。
java.io软件包提供了一些类和接口,它们在由InputStream和OuputStream类提供的读写操作的顶端定义了一些有用的抽象。例如,ObjectInputStream类提供了让你把输入/输出流中的数据当成对象来读取的方法,而ObjectOutputStream类提供了让你能够把Java对象写入数据流中的方法。
优化读写过程
JDK 1.1 增加了一套读写类,它们提供了比现有数据流类更有用的抽象和更好的输入/输出性能。例如,BufferedReader和BufferedWriter 类被用来从基于字符的输入和输出流中读取和写入文本。BufferdReader 类缓存字符以更高效的读取字符串,数组和文本行。BufferedWriter类缓存字符以更高效的写入字符串,数组和文本行。BufferedReader和BufferedWriter 类可以按需求进行设置。
Java输入/输出架构提供的读取器和写入器类包括 LineNumberReader 类,CharArrayReader类,FileReader类,FilterReader类,PushbackReader类,PipedReader类,StringReader类以及其它一些类。这些类是在InputStream和OuputStream类顶部的包裹类因此提供了与InputStream和OuputStream类相似的方法。但是,这些类为读写特定的对象,比方文件,字符数组和字符串等等提供了更高效而有用的抽象。
读取数据
当你从一个相应的数据源对象里提取输入流或者是创建一个读取器对象的时候就会自动打开一个输入流。例如,要为一个文件打开输入流,我们只需要以下面的方式把文件名传递给Java.io.FileReader对象的构造函数:
java.io.FileReader fileReader = new java.io.FileReader("/home/me/myfile.txt");
要按顺序读取FileReader底层的输入流中的一个字节数据,只需要使用不带参数的read方法。表A中的代码段从一个文件读取文本数据,一次一个字符,然后把它写入System.out里。
要从输入流读取指定数目的字节数据到char数组里,只需要使用带一个char[]参数的read方法。数组的长度被用来确定应该读取的字符的个数。表B演示了这个技术。
要关闭一个输入流以及这个流使用的所有系统资源,你只需要以下面的方式调用close方法:
fileReader.close();
写入数据
象一个输入流一样,输出流通常在你从相应的数据源提取它或者是在你创建一个写入对象的时候被自动的打开。例如,要为一个文件打开输出流,我们把文件的名字传递给java.io.FileWriter对象的构造函数,如下所示:
java.io.FileWriter fileWriter = new
java.io.FileWriter("/home/me/out.txt");
要将一个特定的字符写入到输出流中,可以使用带一个int参数的write方法,int参数代表要定入的字符。
int aChar = (int)'X';
fileWriter.write(aChar);
要在输出流给定的偏移地址写入一个char数组中特定数目的字符,你可以使用带一个char[]参数,一个int 偏移量参数和一个int长度参数的write方法,如下面的例子所示:
fileWriter.write(buffer, 0, byteCount);
要关闭一个输出流并释放所有与之相关的系统资源,可以使用close方法,就象这样:
fileWriter.close();
要强迫写出一个输出流中的所有数据,可以使用下面的flush方法:
fileWriter.flush();
把它们全部综合起来
我们可以使用我们学习过的这些函数从一个文件中读取数据并同时写到另一个文件中去,如表C所示。
总结
Java的输入/输出机制为从不同的数据源读取和写入字符增加了一套简单而标准化的API。你对一种数据源使用Java流的经验能够让你容易的使用其它由Java提供的数据源类型。
在我们下一篇文章中,我们将会开始学习Java平台的联网和远程通讯架构。我们将会把我们对Java流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据。
分享到:
相关推荐
过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码转换、数据压缩等。本篇文章将深入探讨Java I/O中的过滤流,以及...
Java中的输入输出流是Java I/O(Input/Output)系统的核心组成部分,允许程序与外部数据源进行交互。在Java中,所有的I/O操作都基于流的概念,流是数据的序列,可以是字节流或字符流。Java I/O库提供了一系列的类来...
Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...
### Java 输入输出流及文件读写详解 #### I/O 类体系结构 在Java开发中,输入输出(I/O)操作是非常重要的部分,特别是在处理文件、网络通信等方面。Java的I/O类体系主要位于`java.io`包中,此外还有一些新实现的I...
Java 输入输出流(I/O 流)是Java平台的核心特性之一,用于处理数据的传输,包括文件读写、网络通信等。在Java API中,I/O流被组织为一系列类和接口,主要位于`java.io`包。在JDK 1.0中引入了字节流(byte stream)...
在Java中,I/O流用于处理数据的输入和输出,包括从键盘、文件、网络等源获取数据,以及将数据发送到显示器、打印机、文件或其他目的地。Java I/O流分为字符流和字节流两大类,分别处理文本和二进制数据。在这个...
Java中处理文件和数据时,使用流的概念来进行操作。根据不同的标准,流可以分为几种类型。 ##### 1. 按数据流动方向 - **输入流**:主要用于从数据源读取数据。输入流只能从中读取数据,而不能向其中写入数据。...
在Java IO中,还有一种流被称为过滤流(Filter Stream),它们不是直接进行读写操作,而是包装了其他流,提供额外的功能或性能优化,如数据的压缩、解压、转换编码等。例如,DataInputStream和DataOutputStream可以...
在Java中,通过`RandomAccessFile`类可以实现对文件的随机访问,可以在文件的任意位置读写数据,这在处理大型文件或需要定位特定数据时非常有用。 5. 过滤流: 过滤流(Filter Stream)是具有额外功能的流,它们...
Java I/O 文件操作是Java编程中的重要组成部分,它允许开发者处理输入和输出,涉及文件的创建、读取、写入、删除以及复制等任务。在Java中,这些操作主要是通过java.io包提供的类来实现的。下面将详细介绍这些知识点...
I/O流读写文件 I/O流是Java编程语言中的一种基本概念,用于处理输入输出数据的功能。在Java中,I/O流是通过流的概念来实现的,流是一种抽象表示,用于表示输入设备或...理解流的概念和使用流的方法是Java编程的基础。
通过学习和理解这些知识点,初学者能够熟练地使用Java I/O流进行各种数据操作,无论是简单的文件读写,还是复杂的网络数据交换,都能游刃有余。在实际编程中,根据需求选择合适的流类型和组合,能有效地提升程序的...
在Java I/O中,我们使用流(Stream)的概念来处理数据,流是数据传输的通道。本套习题旨在帮助你深入理解和熟练掌握Java I/O的各种操作。 一、输入流(Input Stream) 1. 字节流:InputStream类是所有字节输入流的...
总结来说,理解和掌握Java的I/O流可以帮助你有效地处理数据输入输出,线程管理则让你能够编写并发程序,特殊for语句简化了代码,而文件读写则是日常开发的基本技能。这些知识点的掌握程度直接影响到你在Java考试中的...
Java 输入/输出流是Java程序进行数据传输的关键机制,它允许程序从源(如键盘、文件)接收数据或将数据发送到目的地(如显示器、文件)。Java中的I/O流分为四类:字节流(Byte Streams)和字符流(Character Streams...
Java 1.1引入了过滤器流的概念,如`FilterInputStream`、`FilterReader`和`FilterOutputStream`,它们作为装饰器接口,用于给原始的输入/输出流添加额外的功能。例如,`DataInputStream`和`DataOutputStream`就是...
Java中的I/O流处理是程序与外部设备交互数据的关键机制,包括从文件、网络、内存等数据源读取数据和向这些目标写入数据。I/O流系统在Java的`java.io`包中被实现,提供了丰富的类和接口来支持各种类型的流操作。 **I...
总的来说,Java的I/O系统通过数据流模型提供了一种灵活且强大的方式来处理各种数据输入和输出需求,无论是简单的文件操作还是复杂的网络通信,都可以通过这套系统进行高效地处理。开发者可以根据需要选择适当的流...
在Java编程语言中,输入输出流(Input/Output Stream)是处理数据传输的核心部分,尤其在文件操作和网络通信中。对于"java输入输出流学生成绩管理"这个项目,我们可以推断它是一个使用Java I/O流实现的学生分数管理...
Java的IO流是Java平台提供的一种处理输入输出数据的重要机制,尤其在文件读写方面,它扮演着核心角色。对于初学者来说,理解和掌握Java IO流的使用是学习Java编程的基础,也是进阶到更复杂系统开发的关键一步。 ...