Ⅰ 浪曦网的讲师简介
同济大学软件工程硕士,现就职于理光软件研究所(Ricoh software research center)。曾在上海文华专修学院、北京达内教育科技有限公司、上海交大慧科南洋计算机教育中心、上海东软对日外包学校、北京英泰移动通信有限公司等担任培训讲师,为上海华腾软件系统有限公司、浙江人本集团、西门子移动(上海)有限公司、贵州电力系统有限公司等多家单位做过企业培训,同时担任Sun Java认证考试(SL275、SL314等)培训讲师,具有丰富的IT培训经验,深受学员好评。
专注IT领域:文档工作流,办公自动化解决方案,项目管理、敏捷开发。
技术特长(Java方向):熟练掌握Java、J2EE体系架构,对J2EE常见开源框架有比较深入的研究,对J2EE标准有比较深刻的认识,擅长于Eclipse插件的开发。深入掌握web services的原理与开发并在项目中大量应用。
技术特长(.NET方向):熟练掌握.NET框架,有深入的研究,熟练掌握NHibernate、Spring等开源框架,对LINQ、Silverlight,WCF,WPF等有较为深刻的认识。熟练掌握J2EE与.NET互通信的原理与机制。
技术特长(WEB方向):熟练掌握JavaScript等脚本语言,对CSS有较为深入的掌握,熟练使用常见Ajax框架(Dojo,Extjs、DWR、GWT、Prototype等)。目前对Groovy,ROR,Flex等产生浓厚兴趣。 湖南大学软件工程专业研究生,用友公司前高级软件设计师/资深项目经理,.Net软件设计专家,从事软件开发工作8年,项目管理工作5年,一直致力于企事业单位MIS系统及数据库系统的应用,在电子商务系统、办公OA系统、财务审计系统、酒店管理系统、全国统考及四六级系统等多个行业有大量实际项目管理、设计、开发经验,在.NET序列语言(Vb、Net、C#、Asp、Net…)高级编程技术中具有深厚的理论功底和大量的实践经验。曾作为微软特聘.NET高级讲师从事微软大客户培训工作。
技术特长(.NET方向):精通.Net技术在BS及CS结构中的应用,
技术特长(数据库方向):精通SQLServer、Oracle、Db2、Sybase等大型数据库的设计和编程。
Ⅱ 如何使用Java 输出,输出流读写数据
在“面向对象编程: 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 流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据