分享
 
 
 

学习Java的笔记(5)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

121、Stream根据功能可分为数据侦听器流(data Sink Stream,侦听器:内存、管道、文件)和进程流

(Processing Stream)

122、在谈Java的流类之前,先谈如何生成一个File对象,它时一个和流无关的类。File对象可用来生成

和文件(及其所在的路径)或目录结构相关的对象,由于不同的系统可能会有不同的目录结果表示法,使

用File可完成和系统无关的目的(使用抽象的路径表示法)。

123、File对象生成方法:

File(String path):将一个代表路径的字符串转换为抽象的路径表示法

File(String parent,String child):parent代表目录,child代表文件,child不可为空

File(File parent,String child):parent代表一个File对象的目录,child代表文件,child不

可为空

124、File提供一些方法来测试或检查一个File对象:

boolean exists():若该文件或目录存在,则返回true

boolean isDirectory():若为目录则返回true

File[] listFiles():得到该对象所代表的目录下的File对象数组,若不为该目录,则返回null

String[] list():同上,但返回一个String数组

long length():得到和该对象相关的文件的大小,若不存在,则返回值为0L

String toString():得到抽象路径表示法

String getParent():得到抽象路径表示法的目录部分(不包含最后一个部分)

String getName():得到抽象路径表示法的最后一个部分

125、改变一个File对象的方法:

boolean renameTo(File newName):将目前File对象所代表的路径名改为newName所代表的路径名

。若更改成功,则返回值为true

boolean mkdir():生成一个新的目录。入成功,则返回值为true

boolean mkdirs():生成一个新的目录,包含不存在的子目录。若成功,返回值为true

boolean delete():删除目前File对象所代表的文件或目录,若是目录,则需为空的。若成功,

返回true

126、没有参数的listFiles()会列出所有的文件名。使用File[] listFiles(FilenameFilter filter)过

滤某些特殊的扩展名或包含某些字符的文件名。FilenameFilter是一个接口,必须生成一个实现它的类来

负责过滤文件名,该类需取代FilenameFilter惟一的方法accept()。boolean accept(File dir,String

name),若返回为true则会将目前检查的文件包含在listFiles()的返回数组内。

127、字节流的构造函数:

FileInputStream(String name):打开文件name用以读取数据

FileInputStream(File file):打开和File对象file相关联的文件,用以读取数据

FileOutputStream(String name):打开文件name用以写入数据

FileOutputStream(File file):打开和File对象file相关联的文件,用以写入数据

FileOutputStream(String name,boolean append):打开文件name用以写入数据,若append为

true,则写入的数据会加到原有的文件后。

128、字节数组(byte array)的构造函数:

ByteArrayInputStream(byte[] buffer):生成一个字节数组的输入流,并指定一个字节数组

buffer为此输入流的流缓冲区。

ByteArrayOutputStream():生成一个字节数组的输出流,其缓冲区的默认初始大小为32字节,若

有需要,缓冲区的大小会随之增加

ByteArrayOutputStream(int size):同上,但分配size字节的初始大小给缓冲区。

129、一些ByteArrayOutStream常用的方法:

int size():返回此流缓冲区的大小

byte[] toByteArray():生成一个新的字节数组,并将流的内容复制到此自己数组。

String toString():将流的内容转换为String对象。

130、文件的合并:SequenceInputStream

SequenceInputStream(InputStream head,InputStream tail):生成一个新的输入流,先读入

head,后是tail

SequenceInputStream(Enumeration enum):将enum内的流根据序合并韦一个新的输入流,enum内

必须是InputStream对象。

131、Vector的功能就像一个数组,但它能根据需要来改变大小。

132、管道(pipe)提供一种线程间通信的方法,可由于IPC(Inter-Process Communication,进程间通

信)或是ITC(Inter-Thread Communication,线程间通信),但它无法执行不同主机之间的通信。

133、一个输入管道是用来接收一个输出管道所写出的数据,因此,一个线程会负责送出

(PipedOutputStream对象)数据,而另一个线程需负责接收(PipedInputStream对象)这些数据。

134、管道的数据流(data flow)是单向的,需要生成另一组输入和输出管道来负责另一个方向的数据传

送。

135、如果要将管道输出流的数据送到管道输入流,可使用

PipedOutputStream(PipedInputStream pipeIn)或

connect(PipedInputStream pipeIn)

140、字符流的类:1),BufferedReader是一种过滤器(filter)(extends FilterReader)。过滤器用

来将流的数据加以处理再输出。构造函数为:

BufferedReader(Reader in):生成一个缓冲的字符输入流,in为一个读取器

BufferedReader(Reader in,int size):生成一个缓冲的字符输入流,并指定缓冲区的大小为

size

常用的方法为:

String readLine():读入一行的文字(以\n或\r结尾),返回的String对象并不包含\n或\r,若

已达流的末端则返回null

当使用缓冲流的read()或readLine()读取数据时,先会尝试从缓冲区读取,若缓冲区中并没有数

据,则会尽可能的将数据读入缓冲区中,以留待后续的读取。

141、2),LineNumberReader也是一种过滤器,而它也是一种缓冲流(extends BufferedReader),可用

来记录读入的行数,这里所谓的一行时以\n或\r结尾。常用方法:

int getLineNumber():得到目前的行数。

142、3),PrinterWriter也是一种过滤器(extendes FilterWriter),可用来将输出导入某种设备。

143、I/O流的一个特点是它们能经过流链接的方式结合在一起,每个流类会执行特殊的工作再将结果传到

下一个链接,可使用过滤器将流链接在一起。

BufferedReader inBuffer=new BufferedReader(new FileReader(inFile));

使用流链接时,只需要关闭最外层的链接流,其他链接的流会自动关闭。可以使用的链接是最后一个流(

inBuffer),此时,我们并无法直接使用FileReader流。如果写成:

FileReader fileIn=new FileReader(inFile);

BufferedReader inBuffer=new BufferedReader(fileIn);

此时,fileIn仍存在,这可能会因写程序的疏忽而造成同时有两个流链接导同一个来源(inFile),这往

往会有潜在的危险。

144、随机存取:RandomAccessFile,构造函数

RandomAccessFile(File file,String mode):其中mode是用来指定存取的模式,可为r,w或rw

RandomAccessFile(String name,String mode):name为和系统相关的文件名字

常用方法:

读取:boolean readBoolean();byte readByte();char readChar();double readDouble

();float readFloat();int readInt();long readLong();short readShort();String readLine()

写入:void writeByte(Byte v);void writeByte(String s);void writeChar(char v);void

writeChars(String s);void writeDouble(double v);void writeFloat(float v);void writeInt(int

v);void writeLong(long v);void writeShort(short v)

与目前文件位置有关的方法:

void seek(long pos):将文件指针移到pos(不可为负)的位置这是相对于文件初始位置的值(

初始值为0)

long getFilePointer():得到目前文件指针的位置。

long length():得到文件的长度

145、文件压缩及解压缩方法:ZipInputStream(extends InflaterInputStream)和ZipOutputStream

(extends DeflaterOutputStream)

146、将文件写入ZIP文件的步骤:

1)生成和所要生成的ZIP文件相关联的ZipOutputStream对象

2)一个ZIP文件往往不只含有一个压缩文件,我们将每个要加入的文件称为一个ZIP入口,我们

使用ZipEntry(String fileName)来生成这些ZipEntry对象。

3)使用putNextEntry(ZipEntry entry)将此ZIP入口加入ZIP文件

4)将文件内容写入此ZIP文件

5)使用closeEntry()结束目前的ZIP入口,继续下一个ZIP入口

147、将压缩文件从ZIP文件读出的步骤:

1)生成和所要读入的ZIP文件相关联的ZipInputStream对象

2)利用getNextEntry()得到下一个ZIP入口

148、我们将对象存取自一个流称为序列化(serialization),为了完成对象的序列化(将一个对象写导

流称为序列化(serializing),而从一个流将对象读出称为反序列化(deserializing))。

149、存取的对象需满足下列条件:

类需为public

类需实现Serializable接口

若有数据不是可序列化的或不需要写出,则需将其声明为transient

150、java.io提供ObjectInputStream和ObjectOutputStream来存取对象,由于它们和DataInputStream及

DataOutputStream有共同的接口,因此它们也可使用相同的方法来读取或写入数据。还有其他的方法:

void writeObject(Object obj):用于ObjectOutputStream,将对象写入流

Object readObject():用于ObjectInputStream,将对象由流读出。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有