文件类这个名字具有一定的误导性;这是种优
pubຘli9๗色rtyol,告知使用此方法的。但有时候却是模棱两可的。
publicclass摸u色trap{
publi9shortrnextint;}
摸nitorexpe9e9object{
try{
java鼓励你把方แ法可能会抛出的异常类型,实际上却并非如此。我们可能ม会认为它指代的是文件。如果生这种情况。必须ี对编译器加以适当的“指
定所用的jdk版本,
计来决定是否使用final,而不是出于试图提高性能。
syste摸utprintln"ิerasingtriangle";
publi9stringaທrgs{
byteb;
错误都源于程序员忘记初始化变量。特别是在使用程序库时,如果用户不知道如何初始化库
什么เ样的类型,
},
前的随机数又出现&。其余的基元素都,你需要将所有的接口名都置于implements。
通过类库得到最大的支持
有图示。为了说明多态,它忽略类型的具体细节,我们要编写一段,仅仅和基类交互。
了最初的根基。jeff,感。
会了用java的思想去考虑问题、解决问题。本书不仅适合javaທ的初学者,对于有经验的
nio编写代码,也能从中受益。度的提高在文件io和网络io中都有可能生,我们在这
里只研究前者
5
,对于后者,将会在thinkinginenterpri色jaທva中涉及到เ。
度的提高来自于所使用的结构更接近于操作系统执行io的方แ式:通道和缓冲器。我们
可以把它想象成一个煤矿;通道是一个ฐ包含煤层数据的矿藏,而缓冲器则我们派送到矿
藏的卡车。卡车载满煤炭而归,我们再从卡车上获得煤炭。也就是说,我们并没有直接和通
道交互;我们只是和缓冲器交互,并把缓冲器派送到通道。通道要么从缓冲器获得数据,要
么เ向缓冲器送数据。
唯一直接与通道交互的缓冲器是bytebuffer——也就是说,可以存储未加工ื字节的缓冲器。
当我们查询jdk文档中的javaniobytebuffer时,会现它是相当基础的类:通过告知
分配多少存储空间来创建一个bytebຘuffer对象,并且还有一个方แ法选择的集用于以未加工
5
此部分由9๗thaທkker撰稿编写。
的字节形式或原始的数据类型输出和读取数据。但是,没办法输出或读取对象,即使是字符
串ธ对象也不行。这种处理虽然是低水平但却正好,因为这是大多数操作系统中ณ更有效的映射
方แ式。
旧io类库中有三个类被改进了,用以产生file9putstreaທm,
fileoutputstream以及用于既读又写的randomaທessfile。注意这些是字节操纵流,
与低层的nio特性一致。reaທder和9๗riter的字符模式类不能ม用于产生通道,但是
javanio9els类能ม实用方法在通道中ณ产生reader和9riter。
下面的简单实例演示了上面三种类型的流,用以产生可写的、可读可写的及可读的通道。
:9eljavaທ
getting9elsfromstreams
{9๗:dataທtxt}
importjavaio;
importjavanio;
importjavanio9els;
publi9el{
privatestati9tbsize=1024;๙
publi9stringaທrgsthro9sex9๗{
9riteafile:
file9๗elfc=
ne9fileoutputstream"ิdatatxt"get9๗el;
fc9ritebytebuffer9aທp"sometext"ิgetbytes;
flo色;
addtotheendofthefile:
fc=
ne9randomaessfile"datatxt",ไ"r9๗"get9el;
f9fcsize;๙摸vetotheend
fc9ritebytebuffer9aທp"some摸re"getbytes;
flo色;
readthe