﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-从制造到创造-文章分类-Java基础知识</title><link>http://www.blogjava.net/coderdream/category/14394.html</link><description>软件工程师成长之路</description><language>zh-cn</language><lastBuildDate>Wed, 28 May 2008 07:10:13 GMT</lastBuildDate><pubDate>Wed, 28 May 2008 07:10:13 GMT</pubDate><ttl>60</ttl><item><title>Mssql语句</title><link>http://www.blogjava.net/coderdream/articles/203438.html</link><dc:creator>CoderDream</dc:creator><author>CoderDream</author><pubDate>Wed, 28 May 2008 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/coderdream/articles/203438.html</guid><wfw:comment>http://www.blogjava.net/coderdream/comments/203438.html</wfw:comment><comments>http://www.blogjava.net/coderdream/articles/203438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coderdream/comments/commentRss/203438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coderdream/services/trackbacks/203438.html</trackback:ping><description><![CDATA[<p>&nbsp;mySQL常用SQL语句技法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>下列语句部分是Mssql语句，不可以在access中使用。 </p>
<p>SQL分类： <br />
　　DDL—数据定义语言(CREATE，ALTER，DROP，DECLARE) <br />
　　DML—数据操纵语言(SELECT，DELETE，UPDATE，INSERT) <br />
　　DCL—数据控制语言(GRANT，REVOKE，COMMIT，ROLLBACK)<br />
　　首先,简要介绍基础语句：<br />
1、说明：创建数据库<br />
&nbsp;&nbsp;&nbsp;&nbsp;CREATE DATABASE database-name </p>
<p>2、说明：删除数据库<br />
&nbsp;&nbsp;&nbsp;&nbsp;drop database dbname</p>
<p>3、说明：备份sql server<br />
　　--- 创建 备份数据的 device<br />
&nbsp;&nbsp;&nbsp;&nbsp;USE master<br />
&nbsp;&nbsp;&nbsp;&nbsp;EXEC sp_addumpdevice &#8217;disk&#8217;, &#8217;testBack&#8217;, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&#8217;c:mssql7backupMyNwind_1.dat&#8217;<br />
　　--- 开始 备份<br />
&nbsp;&nbsp;&nbsp;&nbsp;BACKUP DATABASE pubs TO testBack </p>
<p>4、说明：创建新表<br />
&nbsp;&nbsp;&nbsp;create table tabname(col1 type1 [not null] <br />
&nbsp;&nbsp;&nbsp;[primary key],col2 type2 [not null],..)<br />
　　根据已有的表创建新表： <br />
&nbsp;&nbsp;&nbsp;A：create table tab_new like tab_old (使用旧表创建新表)<br />
&nbsp;&nbsp;&nbsp;B：create table tab_new as select col1,col2&#8230; from <br />
&nbsp;&nbsp;&nbsp;tab_old definition only</p>
<p>5、说明：<br />
　　删除新表：drop table tabname </p>
<p>6、说明：<br />
　　增加一个列：Alter table tabname add column col type<br />
　　注：列增加后将不能删除。DB2中列加上后数据类型也不能改变，唯一能改变的是增加varchar类型的长度。</p>
<p>7、说明：<br />
　　添加主键：Alter table tabname add primary key(col) <br />
　　说明：<br />
　　删除主键：Alter table tabname drop primary key(col)</p>
<p>8、说明：<br />
　　创建索引：create [unique] index idxname on tabname(col&#8230;.) <br />
　　删除索引：drop index idxname<br />
　　注：索引是不可更改的，想更改必须删除重新建。</p>
<p>9、说明：<br />
　　创建视图：create view viewname as select statement<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除视图：drop view viewname</p>
<p>10、说明：几个简单的基本的sql语句<br />
　　选择：select * from table1 where 范围<br />
　　插入：insert into table1(field1,field2) values(value1,value2)<br />
　　删除：delete from table1 where 范围<br />
　　更新：update table1 set field1=value1 where 范围<br />
　　查找：select * from table1 where field1 like &#8217;%value1%&#8217; ---like的语法很精妙，查资料!<br />
　　排序：select * from table1 order by field1,field2 [desc]<br />
　　总数：select count * as totalcount from table1<br />
　　求和：select sum(field1) as sumvalue from table1<br />
　　平均：select avg(field1) as avgvalue from table1<br />
　　最大：select max(field1) as maxvalue from table1<br />
　　最小：select min(field1) as minvalue from table1</p>
<p>11、说明：几个高级查询运算词<br />
　　A： UNION 运算符 <br />
　　UNION 运算符通过组合其他两个结果表（例如 TABLE1 和 TABLE2）并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时（即 UNION ALL），不消除重复行。两种情况下，派生表的每一行不是来自 TABLE1 就是来自 <br />
TABLE2。<br />
　　B： EXCEPT 运算符 <br />
　　EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL)，不消除重复行。 <br />
　　C： INTERSECT 运算符<br />
　　INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL)，不消除重复行。<br />
　　注：使用运算词的几个查询结果行必须是一致的。</p>
<p>12、说明：使用外连接 <br />
　　A、left outer join： <br />
　　左外连接（左连接）：结果集几包括连接表的匹配行，也包括左连接表的所有行。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c<br />
　　B：right outer join: <br />
　　右外连接(右连接)：结果集既包括连接表的匹配连接行，也包括右连接表的所有行。<br />
　　C：full outer join： <br />
　　全外连接：不仅包括符号连接表的匹配行，还包括两个连接表中的所有记录。</p>
<p>其次，大家来看一些不错的sql语句<br />
　　1、说明：复制表(只复制结构,源表名：a 新表名：b) (Access可用)<br />
　　法一：select * into b from a where 1&lt;&gt;1<br />
　　法二：select top 0 * into b from a<br />
　　2、说明：拷贝表(拷贝数据,源表名：a 目标表名：b) (Access可用)<br />
insert into b(a, b, c) select d,e,f from b;<br />
　　3、说明：跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)<br />
insert into b(a, b, c) select d,e,f from b in <br />
&#8216;具体数据库&#8217; where 条件<br />
　　例子：..from b in &#8217;"&amp;Server.MapPath(".")&amp;"data.mdb" &amp;"&#8217; where..<br />
　　4、说明：子查询(表名1：a 表名2：b)<br />
select a,b,c from a where a IN (select d from b ) <br />
或者: select a,b,c from a where a IN (1,2,3)<br />
　　5、说明：显示文章、提交人和最后回复时间<br />
select a.title,a.username,b.adddate from table <br />
a,(select max(adddate) adddate from table where <br />
table.title=a.title) b<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、说明：外连接查询(表名1：a 表名2：b)<br />
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT <br />
OUT JOIN b ON a.a = b.c<br />
　　7、说明：在线视图查询(表名1：a )<br />
select * from (SELECT a,b,c FROM a) T where t.a &gt; <br />
1;<br />
　　8、说明：between的用法,between限制查询数据范围时包括了边界值,not between不包括<br />
select * from table1 where time between time1 and time2<br />
select a,b,c, from table1 where a not between 数值1 and 数值2<br />
　　9、说明：in 的使用方法<br />
select * from table1 where a [not] in (&#8216;值1&#8217;,&#8217;值2&#8217;,&#8217;值4&#8217;,&#8217;值6&#8217;)<br />
　　10、说明：两张关联表，删除主表中已经在副表中没有的信息 <br />
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )<br />
　　11、说明：四表联查问题：<br />
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....<br />
　　12、说明：日程安排提前五分钟提醒<br />
SQL: select * from 日程安排 where datediff(&#8217;minute&#8217;,f开始时间,getdate())&gt;5<br />
　　13、说明：一条sql 语句搞定数据库分页<br />
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段<br />
　　14、说明：前10条记录<br />
select top 10 * form table1 where 范围<br />
　　15、说明：选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)<br />
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)<br />
　　16、说明：包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表<br />
(select a from tableA ) except (select a from tableB) except (select a from tableC)<br />
　　17、说明：随机取出10条数据<br />
select top 10 * from tablename order by newid()<br />
　　18、说明：随机选择记录<br />
select newid()<br />
　　19、说明：删除重复记录<br />
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)<br />
　　20、说明：列出数据库里所有的表名<br />
select name from sysobjects where type=&#8217;U&#8217;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21、说明：列出表里的所有的<br />
select name from syscolumns where id=object_id(&#8217;TableName&#8217;)<br />
　　22、说明：列示type、vender、pcs字段，以type字段排列，case可以方便地实现多重选择，类似select 中的case。<br />
select type,sum(case vender when &#8217;A&#8217; then pcs else 0 end),sum(case vender when &#8217;C&#8217; then pcs else 0 end),sum(case vender when &#8217;B&#8217; then pcs else 0 end) FROM tablename group by type<br />
　　显示结果：<br />
&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp; vender pcs<br />
&nbsp;&nbsp;&nbsp;&nbsp;电脑 A 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;电脑 A 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;光盘 B 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;光盘 A 2<br />
&nbsp;&nbsp;&nbsp;&nbsp;手机 B 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;手机 C 3<br />
　　23、说明：初始化表table1<br />
TRUNCATE TABLE table1<br />
　　24、说明：选择从10到15的记录<br />
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc</p>
<p>　　随机选择数据库记录的方法（使用Randomize函数，通过SQL语句实现）<br />
　　对存储在数据库中的数据来说，随机数特性能给出上面的效果，但它们可能太慢了些。你不能要求ASP&#8220;找个随机数&#8221;然后打印出来。实际上常见的解决方案是建立如下所示的循环：<br />
Randomize <br />
RNumber = Int(Rnd*499) +1 <br />
　<br />
While Not objRec.EOF <br />
If objRec("ID") = RNumber THEN <br />
... 这里是执行脚本 ... <br />
end if <br />
objRec.MoveNext <br />
Wend <br />
　　这很容易理解。首先，你取出1到500范围之内的一个随机数（假设500就是数据库内记录的总数）。然后，你遍历每一记录来测试ID <br />
的值、检查其是否匹配RNumber。满足条件的话就执行由THEN <br />
关键字开始的那一块代码。假如你的RNumber <br />
等于495，那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些，但相比更为稳固的企业解决方案这还是个小型数据库了，后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了？ </p>
<p>　　采用SQL，你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset，如下所示：<br />
Randomize <br />
RNumber = Int(Rnd*499) + 1 <br />
　<br />
SQL = "SELECT * FROM Customers WHERE ID = " &amp; <br />
RNumber <br />
　<br />
set objRec = ObjConn.Execute(SQL) <br />
Response.WriteRNumber &amp; " = " &amp; objRec("ID") &amp; " " <br />
&amp; objRec("c_email")<br />
　　不必写出RNumber 和ID，你只需要检查匹配情况即可。只要你对以上代码的工作满意，你自可按需操作&#8220;随机&#8221;记录。Recordset没有包含其他内容，因此你很快就能找到你需要的记录这样就大大降低了处理时间。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;再谈随机数</p>
<p>　　现在你下定决心要榨干Random 函数的最后一滴油，那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random <br />
示例扩展一下就可以用SQL应对上面两种情况了。<br />
　　为了取出几条随机选择的记录并存放在同一recordset内，你可以存储三个随机数，然后查询数据库获得匹配这些数字的记录： </p>
<p>　　SQL = "SELECT * FROM Customers WHERE ID = " &amp; <br />
RNumber &amp; " OR ID = " &amp; RNumber2 &amp; " OR ID = " &amp; <br />
RNumber3 <br />
　　假如你想选出10条记录（也许是每次页面装载时的10条链接的列表），你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成，但是 SELECT <br />
语句只显示一种可能（这里的ID 是自动生成的号码）： <br />
SQL = "SELECT * FROM Customers WHERE ID BETWEEN " &amp; RNumber &amp; " AND " &amp; RNumber &amp; "+ 9" <br />
　　注意：以上代码的执行目的不是检查数据库内是否有9条并发记录。<br />
　　随机读取若干条记录，测试过<br />
Access语法：SELECT top 10 * From 表名 ORDER BY Rnd(id)<br />
Sql server:select top n * from 表名 order by newid()<br />
mysql select * From 表名 Order By rand() Limit n<br />
　　Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)<br />
　　语法 select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...<br />
　　使用SQL语句 用...代替过长的字符串显示<br />
　　语法：<br />
　　SQL数据库：select case when len(field)&gt;10 then left(field,10)+&#8217;...&#8217; else field end as news_name,news_id from tablename<br />
　　Access数据库：SELECT iif(len(field)&gt;2,left(field,2)+&#8217;...&#8217;,field) FROM tablename; </p>
<p>　　Conn.Execute说明<br />
　　Execute方法<br />
　　该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集，该方法的使用格式分为以下两种：<br />
　　1．执行SQL查询语句时，将返回查询得到的记录集。用法为：<br />
　　Set 对象变量名=连接对象.Execute("SQL 查询语言")<br />
　　Execute方法调用后，会自动创建记录集对象，并将查询结果存储在该记录对象中，通过Set方法，将记录集赋给指定的对象保存，以后对象变量就代表了该记录集对象。<br />
　　2．执行SQL的操作性语言时，没有记录集的返回。此时用法为：<br />
　　连接对象.Execute "SQL 操作性语句" [, RecordAffected][, Option]<br />
　　&#183;RecordAffected <br />
为可选项，此出可放置一个变量，SQL语句执行后，所生效的记录数会自动保存到该变量中。通过访问该变量，就可知道SQL语句队多少条记录进行了操作。<br />
　　&#183;Option <br />
可选项，该参数的取值通常为adCMDText，它用于告诉ADO，应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数，可使执行更高效。<br />
　　&#183;BeginTrans、RollbackTrans、CommitTrans方法<br />
　　这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物；RollbackTrans用于回滚事务；CommitTrans用于提交所有的事务处理结果，即确认事务的处理。<br />
　　事务处理可以将一组操作视为一个整体，只有全部语句都成功执行后，事务处理才算成功；若其中有一个语句执行失败，则整个处理就算失败，并恢复到处里前的状态。<br />
　　BeginTrans和CommitTrans用于标记事务的开始和结束，在这两个之间的语句，就是作为事务处理的语句。判断事务处理是否成功，可通过连接对象的Error集合来实现，若Error集合的成员个数不为0，则说明有错误发生，事务处理失败。Error集合中的每一个Error对象，代表一个错误信息。<br />
</p>
<img src ="http://www.blogjava.net/coderdream/aggbug/203438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coderdream/" target="_blank">CoderDream</a> 2008-05-28 11:40 <a href="http://www.blogjava.net/coderdream/articles/203438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java I/O库的设计原则和字符流</title><link>http://www.blogjava.net/coderdream/articles/65619.html</link><dc:creator>CoderDream</dc:creator><author>CoderDream</author><pubDate>Thu, 24 Aug 2006 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/coderdream/articles/65619.html</guid><wfw:comment>http://www.blogjava.net/coderdream/comments/65619.html</wfw:comment><comments>http://www.blogjava.net/coderdream/articles/65619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/coderdream/comments/commentRss/65619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coderdream/services/trackbacks/65619.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#ff0000" size="5">Java I/O库的设计原则<br /></font> <br />Java的I/O库提供了一个称做链接的机制，可以将一个流与另一个流首尾相接，形成一个流管道的链接。这种机制实际上是一种被称为Decorator(装饰)设计模式的应用。<br />通过流的链接，可以动态的增加流的功能，而这种功能的增加是通过组合一些流的基本功能而动态获取的。<br />我们要获取一个I/O对象，往往需要产生多个I/O对象，这也是Java I/O库不太容易掌握的原因，但在I/O库中Decorator模式的运用，给我们提供了实现上的灵活性。<br /> <br /><font color="#ff0000" size="4">I/O流的链接</font></p>
		<p>
				<img height="440" alt="snap003.gif" src="http://www.blogjava.net/images/blogjava_net/coderdream/Java/ch09io/stream/snap003.gif" width="700" border="0" />
		</p>
		<p>
				<font color="#ff0000" size="5">Reader和Writer</font>
		</p>
		<p>Java程序语言使用Unicode来表示字符串和字符。<br />Reader和Writer这两个抽象类主要用来读写字符流。<br /> <br /><font color="#ff0000" size="4"><strong>java.io包中Reader的类层次</strong></font><br /><br /><img height="391" alt="snap004.gif" src="http://www.blogjava.net/images/blogjava_net/coderdream/Java/ch09io/stream/snap004.gif" width="633" border="0" /><br /><br />-------------------------------------------------------------------------------<br />------------<br />Java API:<br />------------<br />java.io <br />类 Reader<br />java.lang.Object<br />  java.io.Reader<br />所有已实现的接口： <br />Closeable, Readable<br />直接已知子类： <br />BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader<br />public abstract class Reader<br />extends Object<br />implements Readable, Closeable</p>
		<p>用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是，多数子类将重写此处定义的一些方法，以提供更高的效率和/或其他功能。 </p>
		<p>从以下版本开始：<br />JDK1.1<br />-------------------------------------------------------------------------------<br />------------<br />Java API:<br />------------<br />java.io <br />类 BufferedReader<br />java.lang.Object<br />  java.io.Reader<br />      java.io.BufferedReader<br />所有已实现的接口： <br />Closeable, Readable<br />直接已知子类： <br />LineNumberReader<br />public class BufferedReader<br />extends Reader</p>
		<p>从字符输入流中读取文本，缓冲各个字符，从而提供字符、数组和行的高效读取。 </p>
		<p>可以指定缓冲区的大小，或者可使用默认的大小。大多数情况下，默认值就足够大了。 </p>
		<p>通常，Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此，建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader（如 FileReader 和 InputStreamReader）。例如， <br /> BufferedReader in<br />   = new BufferedReader(new FileReader("foo.in"));<br /> <br />将缓冲指定文件的输入。如果没有缓冲，则每次调用 read() 或 readLine() 都会导致从文件中读取字节，并将其转换为字符后返回，而这是极其低效的。 </p>
		<p>可以对使用 DataInputStream 进行按原文输入的程序进行本地化，方法是用合适的 BufferedReader 替换每个 DataInputStream。 </p>
		<p>从以下版本开始：<br />JDK1.1<br />-------------------------------------------------------------------------------<br />------------<br />Java API:<br />------------<br />java.io <br />类 InputStreamReader<br />java.lang.Object<br />  java.io.Reader<br />      java.io.InputStreamReader<br />所有已实现的接口： <br />Closeable, Readable<br />直接已知子类： <br />FileReader<br />public class InputStreamReader<br />extends Reader</p>
		<p>InputStreamReader 是字节流通向字符流的桥梁：它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定，否则可能接受平台默认的字符集。 </p>
		<p>每次调用 InputStreamReader 中的一个 read() 方法都会导致从基础输入流读取一个或多个字节。要启用从字节到字符的有效转换，可以提前从基础流读取更多的字节，使其超过满足当前读取操作所需的字节。 </p>
		<p>为了达到最高效率，可要考虑在 BufferedReader 内包装 InputStreamReader。例如： <br /> BufferedReader in<br />   = new BufferedReader(new InputStreamReader(System.in));<br /> <br />从以下版本开始：<br />JDK1.1</p>
		<p>
				<br />
				<font color="#ff0000" size="4">
						<strong>java.io包中Writer的类层次</strong>
				</font>
				<br />
				<br />
				<img height="397" alt="snap005.gif" src="http://www.blogjava.net/images/blogjava_net/coderdream/Java/ch09io/stream/snap005.gif" width="608" border="0" />
				<br />
				<br />-------------------------------------------------------------------------------<br />------------<br />Java API:<br />------------<br />java.io <br />类 Writer<br />java.lang.Object<br />  java.io.Writer<br />所有已实现的接口： <br />Closeable, Flushable, Appendable<br />直接已知子类： <br />BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter<br />public abstract class Writer<br />extends Object<br />implements Appendable, Closeable, Flushable</p>
		<p>写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是，多数子类将重写此处定义的一些方法，以提供更高的效率和/或其他功能。 </p>
		<p>
				<br />从以下版本开始：<br />JDK1.1<br />-------------------------------------------------------------------------------<br />------------<br />Java API:<br />------------<br />java.io <br />类 BufferedWriter<br />java.lang.Object<br />  java.io.Writer<br />      java.io.BufferedWriter<br />所有已实现的接口： <br />Closeable, Flushable, Appendable<br />public class BufferedWriter<br />extends Writer</p>
		<p>将文本写入字符输出流，缓冲各个字符，从而提供单个字符、数组和字符串的高效写入。 </p>
		<p>可以指定缓冲区的大小，或者接受默认的大小。在大多数情况下，默认值就足够大了。 </p>
		<p>该类提供了 newLine() 方法，它使用平台自己的行分隔符概念，此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。 </p>
		<p>通常 Writer 将其输出立即发送到基础字符或字节流。除非要求提示输出，否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer（如 FileWriters 和 OutputStreamWriters）。例如， <br /> PrintWriter out<br />   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));<br /> <br />将缓冲 PrintWriter 对文件的输出。如果没有缓冲，则每次调用 print() 方法会导致将字符转换为字节，然后立即写入到文件，而这是极其低效的。 </p>
		<p>
				<br />从以下版本开始：<br />JDK1.1<br />-------------------------------------------------------------------------------<br />------------<br />Java API:<br />------------<br />java.io <br />类 OutputStreamWriter<br />java.lang.Object<br />  java.io.Writer<br />      java.io.OutputStreamWriter<br />所有已实现的接口： <br />Closeable, Flushable, Appendable<br />直接已知子类： <br />FileWriter<br />public class OutputStreamWriter<br />extends Writer</p>
		<p>OutputStreamWriter 是字符流通向字节流的桥梁：使用指定的 charset 将要向其写入的字符编码为字节。它使用的字符集可以由名称指定或显式给定，否则可能接受平台默认的字符集。 </p>
		<p>每次调用 write() 方法都会针对给定的字符（或字符集）调用编码转换器。在写入基础输出流之前，得到的这些字节会在缓冲区累积。可以指定此缓冲区的大小，不过，默认的缓冲区对多数用途来说已足够大。注意，传递到此 write() 方法的字符是未缓冲的。 </p>
		<p>为了达到最高效率，可考虑将 OutputStreamWriter 包装到 BufferedWriter 中以避免频繁调用转换器。例如： <br /> Writer out<br />   = new BufferedWriter(new OutputStreamWriter(System.out));<br /> </p>
		<p>代理对 是一个字符，它由两个 char 值序列表示：高 代理项的范围为 '\uD800' 到 '\uDBFF'，它后面跟着范围为 '\uDC00' 到 '\uDFFF' 的低 代理项。如果由代理项对表示的字符无法由给定的字符集编码，则把依赖于字符集的替代序列 写入输出流。 </p>
		<p>错误代理元素 指的是后面不跟低代理项的高代理项，或前面没有高代理项的低代理项。尝试写入包含错误代理元素的字符流是非法的。写入错误代理元素时，此类实例的行为是不确定的。 </p>
		<p>
				<br />从以下版本开始：<br />JDK1.1<br />-------------------------------------------------------------------------------<br />-------------------------------------------------------------------------------<br />Demo1：通过字符流将字符串写入指定文件。<br />-------------------------------------------------------------------------------</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_43_327_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_327_Open_Text.style.display='none'; Codehighlighter1_43_327_Closed_Image.style.display='inline'; Codehighlighter1_43_327_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_43_327_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_43_327_Closed_Text.style.display='none'; Codehighlighter1_43_327_Open_Image.style.display='inline'; Codehighlighter1_43_327_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> CharStream </span>
				<span id="Codehighlighter1_43_327_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_43_327_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_103_324_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_324_Open_Text.style.display='none'; Codehighlighter1_103_324_Closed_Image.style.display='inline'; Codehighlighter1_103_324_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_103_324_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_103_324_Closed_Text.style.display='none'; Codehighlighter1_103_324_Open_Image.style.display='inline'; Codehighlighter1_103_324_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> Exception </span>
						<span id="Codehighlighter1_103_324_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_103_324_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080"> 6</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  FileOutputStream fos </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> FileOutputStream(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">write.txt</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /></span>
								<span style="COLOR: #008080"> 8</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  OutputStreamWriter osw </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> OutputStreamWriter(fos);<br /></span>
								<span style="COLOR: #008080"> 9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  BufferedWriter bw </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> BufferedWriter(osw);<br /></span>
								<span style="COLOR: #008080">10</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">11</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  bw.write(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">http://www.blogjava.com</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /></span>
								<span style="COLOR: #008080">12</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  bw.close();<br /></span>
								<span style="COLOR: #008080">13</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">14</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">15</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>-------------------------------------------------------------------------------<br />运行结果：字符串"<a href="http://www.blogjava.com">http://www.blogjava.com</a>"被写入write.txt 文件中。<br />-------------------------------------------------------------------------------</p>
		<p>Demo2：通过字符流将字符串写入指定文件，同时读取字符流。<br />-------------------------------------------------------------------------------</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_43_540_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_540_Open_Text.style.display='none'; Codehighlighter1_43_540_Closed_Image.style.display='inline'; Codehighlighter1_43_540_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_43_540_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_43_540_Closed_Text.style.display='none'; Codehighlighter1_43_540_Open_Image.style.display='inline'; Codehighlighter1_43_540_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> CharStream </span>
				<span id="Codehighlighter1_43_540_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_43_540_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_103_537_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_537_Open_Text.style.display='none'; Codehighlighter1_103_537_Closed_Image.style.display='inline'; Codehighlighter1_103_537_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_103_537_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_103_537_Closed_Text.style.display='none'; Codehighlighter1_103_537_Open_Image.style.display='inline'; Codehighlighter1_103_537_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> Exception </span>
						<span id="Codehighlighter1_103_537_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_103_537_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080"> 6</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  FileOutputStream fos </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> FileOutputStream(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">write.txt</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /></span>
								<span style="COLOR: #008080"> 8</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  OutputStreamWriter osw </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> OutputStreamWriter(fos);<br /></span>
								<span style="COLOR: #008080"> 9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  BufferedWriter bw </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> BufferedWriter(osw);<br /></span>
								<span style="COLOR: #008080">10</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080">11</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  bw.write(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">http://www.blogjava.com</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /></span>
								<span style="COLOR: #008080">12</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  bw.close();<br /></span>
								<span style="COLOR: #008080">13</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span>
								<span style="COLOR: #008080">14</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  FileInputStream fis </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> FileInputStream(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">write.txt</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /></span>
								<span style="COLOR: #008080">15</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  InputStreamReader isr </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> InputStreamReader(fis);<br /></span>
								<span style="COLOR: #008080">16</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  BufferedReader br </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> BufferedReader(isr);<br /></span>
								<span style="COLOR: #008080">17</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  System.out.println(br.readLine());<br /></span>
								<span style="COLOR: #008080">18</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  br.close();<br /></span>
								<span style="COLOR: #008080">19</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">20</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">21</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>-------------------------------------------------------------------------------<br />运行结果：字符串"<a href="http://www.blogjava.com">http://www.blogjava.com</a>"被写入write.txt 文件中。<br />   然后被读取出来。<br />-------------------------------------------------------------------------------</p>
		<p>Demo3：通过字符流接收数据，然后输出到控制台。<br />-------------------------------------------------------------------------------</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_43_363_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_363_Open_Text.style.display='none'; Codehighlighter1_43_363_Closed_Image.style.display='inline'; Codehighlighter1_43_363_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_43_363_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_43_363_Closed_Text.style.display='none'; Codehighlighter1_43_363_Open_Image.style.display='inline'; Codehighlighter1_43_363_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> CharStream </span>
				<span id="Codehighlighter1_43_363_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_43_363_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_103_360_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_360_Open_Text.style.display='none'; Codehighlighter1_103_360_Closed_Image.style.display='inline'; Codehighlighter1_103_360_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_103_360_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_103_360_Closed_Text.style.display='none'; Codehighlighter1_103_360_Open_Image.style.display='inline'; Codehighlighter1_103_360_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> Exception </span>
						<span id="Codehighlighter1_103_360_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_103_360_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080"> 6</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  InputStreamReader isr </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> InputStreamReader(System.in);<br /></span>
								<span style="COLOR: #008080"> 8</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  BufferedReader br </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> BufferedReader(isr);<br /></span>
								<span style="COLOR: #008080"> 9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span>
								<span style="COLOR: #008080">10</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  String strLine </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">; </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 定义一个对象后最好先将它初始化</span>
								<span style="COLOR: #008000">
										<br />
								</span>
								<span style="COLOR: #008080">11</span>
								<span style="COLOR: #008000">
										<img id="Codehighlighter1_304_340_Open_Image" onclick="this.style.display='none'; Codehighlighter1_304_340_Open_Text.style.display='none'; Codehighlighter1_304_340_Closed_Image.style.display='inline'; Codehighlighter1_304_340_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_304_340_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_304_340_Closed_Text.style.display='none'; Codehighlighter1_304_340_Open_Image.style.display='inline'; Codehighlighter1_304_340_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">  </span>
								<span style="COLOR: #0000ff">while</span>
								<span style="COLOR: #000000"> ((strLine </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> br.readLine()) </span>
								<span style="COLOR: #000000">!=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">) </span>
								<span id="Codehighlighter1_304_340_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_304_340_Open_Text">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080">12</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   System.out.println(strLine);<br /></span>
										<span style="COLOR: #008080">13</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">14</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span>
								<span style="COLOR: #008080">15</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  br.close();<br /></span>
								<span style="COLOR: #008080">16</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">17</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">18</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>-------------------------------------------------------------------------------<br />运行结果：控制台输出输入的内容。<br />-------------------------------------------------------------------------------<br />-------------------------------------------------------------------------------<br />Demo4：通过字符流接收数据，然后输出到控制台，同时将输入内容写入<br />  指定的文件中。<br />-------------------------------------------------------------------------------</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #008080"> 1</span>
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> java.io.</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">;<br /></span>
				<span style="COLOR: #008080"> 2</span>
				<span style="COLOR: #000000">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
				</span>
				<span style="COLOR: #008080"> 3</span>
				<span style="COLOR: #000000">
						<img id="Codehighlighter1_43_595_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_595_Open_Text.style.display='none'; Codehighlighter1_43_595_Closed_Image.style.display='inline'; Codehighlighter1_43_595_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_43_595_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_43_595_Closed_Text.style.display='none'; Codehighlighter1_43_595_Open_Image.style.display='inline'; Codehighlighter1_43_595_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> CharStream </span>
				<span id="Codehighlighter1_43_595_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_43_595_Open_Text">
						<span style="COLOR: #000000">{<br /></span>
						<span style="COLOR: #008080"> 4</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080"> 5</span>
						<span style="COLOR: #000000">
								<img id="Codehighlighter1_103_592_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_592_Open_Text.style.display='none'; Codehighlighter1_103_592_Closed_Image.style.display='inline'; Codehighlighter1_103_592_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_103_592_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_103_592_Closed_Text.style.display='none'; Codehighlighter1_103_592_Open_Image.style.display='inline'; Codehighlighter1_103_592_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /> </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> main(String[] args) </span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> Exception </span>
						<span id="Codehighlighter1_103_592_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_103_592_Open_Text">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080"> 6</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 7</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  FileOutputStream fos </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> FileOutputStream(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">write1.txt</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /></span>
								<span style="COLOR: #008080"> 8</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  OutputStreamWriter osw </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> OutputStreamWriter(fos);<br /></span>
								<span style="COLOR: #008080"> 9</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  BufferedWriter bw </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> BufferedWriter(osw);<br /></span>
								<span style="COLOR: #008080">10</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span>
								<span style="COLOR: #008080">11</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  InputStreamReader isr </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> InputStreamReader(System.in);<br /></span>
								<span style="COLOR: #008080">12</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  BufferedReader br </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> BufferedReader(isr);<br /></span>
								<span style="COLOR: #008080">13</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span>
								<span style="COLOR: #008080">14</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  String strLine </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">; </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 定义一个对象后最好先将它初始化</span>
								<span style="COLOR: #008000">
										<br />
								</span>
								<span style="COLOR: #008080">15</span>
								<span style="COLOR: #008000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">16</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_480_558_Open_Image" onclick="this.style.display='none'; Codehighlighter1_480_558_Open_Text.style.display='none'; Codehighlighter1_480_558_Closed_Image.style.display='inline'; Codehighlighter1_480_558_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_480_558_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_480_558_Closed_Text.style.display='none'; Codehighlighter1_480_558_Open_Image.style.display='inline'; Codehighlighter1_480_558_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />  </span>
								<span style="COLOR: #0000ff">while</span>
								<span style="COLOR: #000000"> (</span>
								<span style="COLOR: #000000">!</span>
								<span style="COLOR: #000000">(strLine </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> br.readLine()).equals(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">exit</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">)) </span>
								<span id="Codehighlighter1_480_558_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_480_558_Open_Text">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080">17</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   System.out.println(strLine);<br /></span>
										<span style="COLOR: #008080">18</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   bw.write(strLine);<br /></span>
										<span style="COLOR: #008080">19</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />   bw.write(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">\n</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);<br /></span>
										<span style="COLOR: #008080">20</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />  }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">21</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <br /></span>
								<span style="COLOR: #008080">22</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  bw.close();<br /></span>
								<span style="COLOR: #008080">23</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  br.close();<br /></span>
								<span style="COLOR: #008080">24</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /> }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">25</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								<br />
						</span>
						<span style="COLOR: #008080">26</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>-------------------------------------------------------------------------------<br />运行结果：控制台输出输入的内容，同时输入的内容被写入指定的文件中。<br />-------------------------------------------------------------------------------</p>
<img src ="http://www.blogjava.net/coderdream/aggbug/65619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coderdream/" target="_blank">CoderDream</a> 2006-08-24 20:01 <a href="http://www.blogjava.net/coderdream/articles/65619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java IO 技术之基本流类</title><link>http://www.blogjava.net/coderdream/articles/65609.html</link><dc:creator>CoderDream</dc:creator><author>CoderDream</author><pubDate>Thu, 24 Aug 2006 10:41:00 GMT</pubDate><guid>http://www.blogjava.net/coderdream/articles/65609.html</guid><wfw:comment>http://www.blogjava.net/coderdream/comments/65609.html</wfw:comment><comments>http://www.blogjava.net/coderdream/articles/65609.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/coderdream/comments/commentRss/65609.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/coderdream/services/trackbacks/65609.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 流式IO流(Stream)是字节的源或目的。两种基本的流是：输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。流的分类节点流：从特定的地方读写的流类，例如：磁盘或一块内存区域。过滤流：使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。InputStream三个基本的读...&nbsp;&nbsp;<a href='http://www.blogjava.net/coderdream/articles/65609.html'>阅读全文</a><img src ="http://www.blogjava.net/coderdream/aggbug/65609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/coderdream/" target="_blank">CoderDream</a> 2006-08-24 18:41 <a href="http://www.blogjava.net/coderdream/articles/65609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>