如何使用Java 输出,输出流读写数据

pwby329
2013-10-12 · TA获得超过4364个赞
知道小有建树答主
回答量:868
采纳率:50%
帮助的人:2038万
展开全部
在“面向对象编程: J a v a c o l l e c t i o n 更有效管理 e l e m e n t s ”一文中,我们讨论了 J a v a 集合类架构中的类和功能并介绍了它的排序功能。在本文中,我们将学习 J a v a 平台 提供的这些 I / O 类,接口和操作。让我们先从了解 J a v a 数据流开始。数据流 J a v a 所有的 I / O 机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。 J a v a 的 I / O 流提供了读写数据的标准方法。任何 J a v a 中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 J a v a . i o 是大多数面向数据流的输入 / 输出类的主要软件包。这个软件包包含了两个抽象类, I n p u t S t r e a m 和 O u t p u t S t r e a m 。所有其它面象数据流的输入 / 输出类都要扩展这两个基类。 j a v a . i o 软件包提供了一些类和接口,它们在由 I n p u t S t r e a m 和 O u p u t S t r e a m 类提供的读写操作的顶端定义了一些有用的抽象。例如, O b j e c t I n p u t S t r e a m 类提供了让你把输入 / 输出流中的数据当成对象来读取的方法,而 O b j e c t O u t p u t S t r e a m 类提供了让你能够把 J a v a 对象写入数据流中的方法。优化读写过程 J D K 1 . 1 增加了一套读写类,它们提供了比现有数据流类更有用的抽象和更好的输入 / 输出性能。例如, B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类被用来从基于字符的输入和输出流中读取和写入文本。 B u f f e r d R e a d e r 类缓存字符以更高效的读取字符串,数组和文本行。 B u f f e r e d W r i t e r 类缓存字符以更高效的写入字符串,数组和文本行。 B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类可以按需求进行设置。 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m J a v a 输入 / 输出架构提供的读取器和写入器类包括 L i n e N u m b e r R e a d e r 类, C h a r A r r a y R e a d e r 类, F i l e R e a d e r 类, F i l t e r R e a d e r 类, P u s h b a c k R e a d e r 类, P i p e d R e a d e r 类, S t r i n g R e a d e r 类以及其它一些类。这些类是在 I n p u t S t r e a m 和 O u p u t S t r e a m 类顶部的包裹类因此提供了与 I n p u t S t r e a m 和 O u p u t S t r e a m 类相似的方法。但是,这些类为读写特定的对象,比方文件,字符数组和字符串等等提供了更高效而有用的抽象。读取数据当你从一个相应的数据源对象里提取输入流或者是创建一个读取器对象的时候就会自动打开一个输入流。例如,要为一个文件打开输入流,我们只需要以下面的方式把文件名传递给 J a v a . i o . F i l e R e a d e r 对象的构造函数: j a v a . i o . F i l e R e a d e r f i l e R e a d e r = n e w j a v a . i o . F i l e R e a d e r ( " / h o m e / m e / m y f i l e . t x t " ) ; 要按顺序读取 F i l e R e a d e r 底层的输入流中的一个字节数据,只需要使用不带参数的 r e a d 方法。表 A 中的代码段从一个文件读取文本数据,一次一个字符,然后把它写入 S y s t e m . o u t 里。要从输入流读取指定数目的字节数据到 c h a r 数组里,只需要使用带一个 c h a r [ ] 参数的 r e a d 方法 。数组的长度被用来确定应该读取的字符的个数。表 B 演示了这个技术。要关闭一个输入流以及这个流使用的所有系统资源,你只需要以下面的方式调用 c l o s e 方法: f i l e R e a d e r . c l o s e ( ) ; 写入数据象一个输入流一样,输出流通常在你从相应的数据源提取它或者是在你创建一个写入对象的时候被自动的打开。例如,要为一个文件打开输出流,我们把文件的名字传递给 j a v a . i o . F i l e W r i t e r 对象的构造函数,如下所示: j a v a . i o . F i l e W r i t e r f i l e W r i t e r = n e w 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m j a v a . i o . F i l e W r i t e r ( " / h o m e / m e / o u t . t x t " ) ; 要将一个特定的字符写入到输出流中,可以使用带一个 i n t 参数的 w r i t e 方法, i n t 参数代表要定入的字符。 i n t a C h a r = ( i n t ) " X " ; f i l e W r i t e r . w r i t e ( a C h a r ) ; 要在输出流给定的偏移地址写入一个 c h a r 数组中特定数目的字符,你可以使用带一个 c h a r [ ] 参数,一个 i n t 偏移量参数和一个 i n t 长度参数的 w r i t e 方法,如下面的例子所示: f i l e W r i t e r . w r i t e ( b u f f e r , 0 , b y t e C o u n t ) ; 要关闭一个输出流并释放所有与之相关的系统资源,可以使用 c l o s e 方法,就象这样: f i l e W r i t e r . c l o s e ( ) ; 要强迫写出一个输出流中的所有数据,可以使用下面的 f l u s h 方法: f i l e W r i t e r . f l u s h ( ) ; 把它们全部综合起来我们可以使用我们学习过的这些函数从一个文件中读取数据并同时写到另一个文件中去,如表 C 所示。 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 总结 J a v a 的输入 / 输出机制为从不同的数据源读取和写入字符增加了一套简单而标准化的 A P I 。你对一种数据源使用 J a v a 流的经验能够让你容易的使用其它由 J a v a 提供的数据源类型。在我们下一篇文章中,我们将会开始学习 J a v a 平台的联网和远程通讯架构。我们将会把我们对 J a v a 流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据 J a v a 输入 / 输出( I / O )机制提供了一套简单的,标准化的 A P I 以便从不同的数据源读取和写入字符和字节数据。在“面向对象编程: J a v a c o l l e c t i o n 更有效管理 e l e m e n t s ”一文中,我们讨论了 J a v a 集合类架构中的类和功能并介绍了它的排序功能。在本文中,我们将学习 J a v a 平台提供的这些 I / O 类,接口和操作。让我们先从了解 J a v a 数据流开始。数据流 J a v a 所有的 I / O 机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。 J a v a 的 I / O 流提供了读写数据的标准方法。任何 J a v a 中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 J a v a . i o 是大多数面向数据流的输入 / 输出类的主要软件包。这个软件包包含了两个抽象类, I n p u t S t r e a m 和 O u t p u t S t r e a m 。所有其它面象数据流的输入 / 输出类都要扩展这两个基类。 j a v a . i o 软件包提供了一些类和接口,它们在由 I n p u t S t r e a m 和 O u p u t S t r e a m 类提供的读写操作的顶端定义了一些有用的抽象。例如, O b j e c t I n p u t S t r e a m 类提供了让你把输入 / 输出流中的数据当成对象来读取的方法,而 O b j e c t O u t p u t S t r e a m 类提供了让你能够把 J a v a 对象写入数据流中的方法。优化读写过程 J D K 1 . 1 增加了一套读写类,它们提供了比现有数据流类更有用的抽象和更好的输入 / 输出性能。例如, B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类被用来从基于字符的输入和输出流中读取和写入文本。 B u f f e r d R e a d e r 类缓存字符以更高效的读取字符串,数组和文本行。 B u f f e r e d W r i t e r 类缓存字符以更高效的写入字符串,数组和文本行。 B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类可以按需求进行设置。 J a v a 输入 / 输出架构提供的读取器和写入器类包括 L i n e N u m b e r R e a d e r 类, C h a r A r r a y R e a d e r 类, F i l e R e a d e r 类, F i l t e r R e a d e r 类, P u s h b a c k R e a d e r 类, P i p e d R e a d e r 类, S t r i n g R e a d e r 类以及其它一些类。这些类是在 I n p u t S t r e a m 和 O u p u t S t r e a m 类顶部的包裹类因此提供了与 I n p u t S t r e a m 和 O u p u t S t r e a m 类相似的方法。但是,这些类为读写特定的对象,比方文件,字符数组和字符串等等提供了更高效而有用的抽象。读取数据当你从一个相应的数据源对象里提取输入流或者是创建一个读取器对象的时候就会自动打开一个输入流。例如,要为一个文件打开输入流,我们只需要以下面的方式把文件名传递给 J a v a . i o . F i l e R e a d e r 对象的构造函数: j a v a . i o . F i l e R e a d e r f i l e R e a d e r = n e w j a v a . i o . F i l e R e a d e r ( " / h o m e / m e / m y f i l e . t x t " ) ; 要按顺序读取 F i l e R e a d e r 底层的输入流中的一个字节数据,只需要使用不带参数的 r e a d 方法。表 A 中的代码段从一个文件读取文本数据,一次一个字符,然后把它写入 S y s t e m . o u t 里。要从输入流读取指定数目的字节数据到 c h a r 数组里,只需要使用带一个 c h a r [ ] 参数的 r e a d 方法。数组的长度被用来确定应该读取的字符的个数。表 B 演示了这个技术。要关闭一个输入流以及这个流使用的所有系统资源,你只需要以下面的方式调用 c l o s e 方法: f i l e R e a d e r . c l o s e ( ) ; 写入 数据象一个输入流一样,输出流通常在你从相应的数据源提取它或者是在你创建一个写入对象的时候被自动的打开。例如,要为一个文件打开输出流,我们把文件的名字传递给 j a v a . i o . F i l e W r i t e r 对象的构造函数,如下所示: j a v a . i o . F i l e W r i t e r f i l e W r i t e r = n e w j a v a . i o . F i l e W r i t e r ( " / h o m e / m e / o u t . t x t " ) ; 要将一个特定的字符写入到输出流中,可以使用带一个 i n t 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 参数的 w r i t e 方法, i n t 参数代表要定入的字符。 i n t a C h a r = ( i n t ) " X " ; f i l e W r i t e r . w r i t e ( a C h a r ) ; 要在 输出流给定的偏移地址写入一个 c h a r 数组中特定数目的字符,你可以使用带一个 c h a r [ ] 参数,一个 i n t 偏移量参数和一个 i n t 长度参数的 w r i t e 方法,如下面的例子所示: f i l e W r i t e r . w r i t e ( b u f f e r , 0 , b y t e C o u n t ) ; 要关闭一个输出流并释放所有与之相关的系统资源,可以使用 c l o s e 方法,就象这样: f i l e W r i t e r . c l o s e ( ) ; 要强迫写出一个输出流中的所有数据,可以使用下面的 f l u s h 方法: f i l e W r i t e r . f l u s h ( ) ; 把它们全部综合起来我们可以使用我们学习过的这些函数从一个文件中读取数据并同时写到另一个文件中去,如表 C 所示。总结 J a v a 的输入 / 输出机制为从不同的数据源读取和写入字符增加了一套简单而标准化的 A P I 。你对一种数据源使用 J a v a 流的经验能够让你容易的使用其它由 J a v a 提供的数据源类型。在我们下一篇文章中,我们将会开始学习 J a v a 平台 的联网和远程通讯架构。我们将会把我们对 J a v a 流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式