Article View: cn.bbs.comp.lang.java
Article #22078Java���˼��---��10�� Java IOϵͳ
From: �˺�2��
Date: Tue, 28 Oct 2003 01:45
Date: Tue, 28 Oct 2003 01:45
501 lines
59690 bytes
59690 bytes
�������������Ա��˵�������õ����룯���ϵͳ��һ���ر����ѵ�����
���ڴ��ڴ�����ͬ����Ʒ��������Ը�������������Ǻ�����֤���ġ�����������ս
�ƺ�����θ������п��ܵ����ء����������ֲ�ͬ�������IO��Ҫ���ǣ��ļ�������̨
���������ӣ���������Ҫͨ�������ͬ�ķ�ʽ������ͨ�ţ�˳�������ʡ������ơ�
�ַ��С����ֵȵȣ���
Java��������ͨ�������������������⡣��ʵ�ϣ�Java��IOϵͳ��������˶�
���࣬���¸տ�ʼ�����֪�Ӻδ����ֵĸо������з����ζ���ǣ�Java��IO��Ƴ�
��ʵ��Ҫ���������ࣩ����Java 1.0��Java 1.1��IO������Ҳ����������
�ı仯����ʱ���Ǽ����¿��滻�ɿ⣬Sun�������Ա��ԭ���Ŀ�����˴��ֱʵ���
չ������˴����µ����ݡ���ˣ�������ʱ���ò����ʹ���¿���ɿ⣬������������
�ĸ��Ӵ��롣
���½�����������Java���ڵĸ���IO�࣬��ѧϰ���ʹ�����ǡ����µĵ�һ����
�����ܡ��ɡ���Java 1.0 IO���⣬��Ϊ�����д�����������ʹ���Ǹ��⡣����ʣ�µIJ�
�ֽ�Ϊ�������Java 1.1 IO���һЩ�����ԡ�ע������Java 1.1�����������뱾�µ�һ
���ֽ��ܵIJ��ִ��룬���ܻ�õ�һ����������ʹ�ø����ԡ���Deprecated feature��
������Ϣ��������Ȼ�ܹ�ʹ�ã�������ֻ�ǽ������ǻ��ñ��º���Ҫ������һЩ������
�����������������м�ֵ�ģ���Ϊ���Ը��������ʶ�Ϸ������·���֮���һЩ���죬
�Ӷ�������ǵ���⣨����˳���Ķ�ΪJava 1.0д�Ĵ��룩��
10.1 ��������
�ɽ�Java���IO��ָ�Ϊ����������������֣���һ������Web������Ķ�����Java����
��ʱ���֪����ͨ��̳У���InputStream��������������������ӵ����Ϊread()��
���������ڶ�ȡ�����ֽڻ����ֽ����顣���Ƶأ���OutputStream����������
ӵ�л��� write()������д�뵥���ֽڻ����ֽ����顣Ȼ������ͨ�������õ���
Щ����������֮���Դ��ڣ�����Ϊ���ӵ�������������ǣ��Ա��ṩһ�������õĽ�
�ڡ���ˣ����Ǻ����õ����ഴ���Լ���ϵͳ����һ������£����Ƕ��ǽ��������
�ص���һ���ṩ�Լ�����Ĺ��ܡ�����֮���Ըе�Java�����⣨Stream Library����
�����ӣ���������Ϊ�˴�������һ���������ȴ��Ҫ������������Ե�ʡ�
���б�Ҫ���չ��ܶ�����з��ࡣ�����������Ⱦ����������йص��������InputS
tream�̳У���������йص��������OutputStream�̳С�
10.1.1 InputStream������
InputStream�������DZ�־��Щ�Ӳ�ͬ��Դ�ز���������ࡣ��Щ��Դ�ذ�����ÿ������
һ����ص�InputStream���ࣩ��
(1) �ֽ�����
(2) String����
(3) �ļ�
(4) ���ܵ�������Ĺ���ԭ������ʵ����еĹܵ����ƣ���һЩ��������һ�ˣ�������
��һ�˳����� (5) һϵ�����������Ա����ǽ���ͳһ�ռ�������һ�����ڡ�
(6) ������Դ�أ���Internet���ӵȣ����ڱ������IJ��ֽ�������
������⣬FilterInputStreamҲ����InputStream��һ�����ͣ������Ϊ���ƻ�������
�ṩһ�����࣬�Ա㽫���Ի������õĽӿ�ͬ���������ӵ�һ���⽫���Ժ����ۡ�
��10.1 InputStream������
�� ���� �������������ʹ��
ByteArrayInputStream �����ڴ��е�һ����������ΪInputStreamʹ�� ������ȡ�ֽڵ�
��������Ϊһ�����Դʹ�á�ͨ����ͬһ��FilterInputStream�������ӣ����ṩһ
�����õĽӿ�
StringBufferInputStream ��һ��Stringת����InputStream һ��String���ִ�������
����ʵʩ����ʵ�ʲ���һ��StringBuffer���ִ����壩����Ϊһ�����Դʹ�á�ͨ��
��ͬһ�� FilterInputStream�������ӣ����ṩһ�����õĽӿ�
FileInputStream ���ڴ��ļ���ȡ��Ϣ ����ļ����һ��String������һ��File��Fil
eDescriptor������Ϊһ�����Դʹ�á�ͨ����ͬһ��FilterInputStream��������
�����ṩһ�����õĽӿ�
PipedInputString ����Ϊ��ص�PipedOutputStreamд����ݡ�ʵ���ˡ��ܵ������ĸ�
�� PipedOutputStream����Ϊһ�����Դʹ�á�ͨ����ͬһ��FilterInputStream����
���ӣ����ṩһ�����õĽӿ�
SequenceInputStream �����������InputStream����ת���ɵ���InputStreamʹ�� ��
��InputStream�������һ��Enumeration������InputStream�����һ����������Ϊһ��
���Դʹ�á�ͨ����ͬһ��FilterInputStream�������ӣ����ṩһ�����õĽӿ�
FilterInputStream ����Ϊ�ƻ����ӿ�ʹ�õ�����г����Ǹ��ƻ���Ϊ����InputStr
eam���ṩ�����õĹ��ܡ��μ��10.3 �μ��10.3���μ��10.3
10.1.2 OutputStream������
��һ������������������ǵ�������δ�ȥ��һ���ֽ����飨��û��String���ٶ���
�ǿ����ֽ����鴴��һ������һ���ļ�������һ�����ܵ�����
������⣬FilterOutputStreamΪ���ƻ��������ṩ��һ�����࣬�����Ի�������
�Ľӿ�ͬ����������������⽫���Ժ����ۡ�
��10.2 OutputStream������
�� ���� �������������ʹ��
ByteArrayOutputStream ���ڴ��д���һ�����������Ƿ�������������ݶ�������
��������� ��ѡ������ij�ʼ��С������ָ����ݵ�Ŀ�ĵء�������ͬFilterOutpu
tStream�������ӵ�һ�𣬿��ṩһ�����õĽӿ�
FileOutputStream ����Ϣ����һ���ļ� ��һ��String����ļ����ѡ��һ��File��
FileDescriptor��������ָ����ݵ�Ŀ�ĵء�������ͬFilterOutputStream��������
��һ�𣬿��ṩһ�����õĽӿ�
PipedOutputStream ����д������κ���Ϣ�����Զ���Ϊ��ص�PipedInputStream����
����ʵ���ˡ��ܵ������ĸ��� PipedInputStream��Ϊ���̴߳���ָ���Լ���ݵ�Ŀ�ĵ�
������ͬFilterOutputStream�������ӵ�һ�𣬱���ṩһ�����õĽӿ�
FilterOutputStream ����Ϊ�ƻ����ӿ�ʹ�õ�����г����?�Ǹ��ƻ���Ϊ����Out
putStream���ṩ�����õĹ��ܡ��μ��10.4 �μ��10.4���μ��10.4
10.2 �������Ժ����õĽӿ�
���ò�λ�����̬��������ӵ������������������������װ��������Decorator��
�������������������ڱ����16�µ����⣨ע�͢٣���װ���������涨��װ�ڳ�ʼ����
���е����ж���ӵ����ͬ�Ľӿڣ��Ա�����װ�����ġ��������ʡ������ǽ���ͬ��
��Ϣ����һ�������������Ƿ��ѱ���װ�Ρ�����������Java IO������ڡ�����������
Filter�����ԭ����ġ�����������������װ�����Ļ��ࣨװ��������ӵ������
װ�ε��Ǹ�������ͬ�Ľӿڣ���װ������ɶԽӿ�������չ��������������ڼ�������
�ġ������������У���
���ദ��Ҫ����������ÿ�ֿ��ܵ�����ṩ֧��ʱ���㾭�����õ�װ��������������
����ʽ̫�࣬������ദ���ò���ʵ�ʡ�Java IO��Ҫ����ͬ��������Ϸ�������
����װ���������Ե��ر����õ�ԭ���ǣ�װ��������Ҳ���Լ���һ��ȱ�㡣������
дһ�������ʱ��װ����Ϊ�����ṩ�˴�ö������ԣ���Ϊ���Է���ػ����ƥ��
���ԣ���������Ҳʹ�Լ��Ĵ����ø�Ӹ��ӡ�ԭ������Java IO��������㣬���DZ���
��������ࡪ�������ġ�IO���ͼ�������װ�����������ܵõ��Լ�ϣ��ĵ���IO����
FilterInputStream��FilterOutputStream�����������ֲ�ʮ��ֱ�ۣ��ṩ����Ӧ��װ��
���ӿڣ����ڿ���һ���ض�����������InputStream�������������OutputStream������
�Ƿֱ��Ǵ�InputStream��OutputStream��������ġ����⣬���Ƕ����ڳ����࣬������
��Ϊ������һ�����IJ�ͬͨ���ֶζ��ṩ��һ��ͨ�õĽӿڡ���ʵ�ϣ�FilterInputStr
eam�� FilterOutputStreamֻ�Ǽ�ģ�����Լ��Ļ��࣬������һ��װ�����Ļ�
Ҫ��
10.2.1 ͨ��FilterInputStream��InputStream��������
FilterInputStream��Ҫ�������ȫȻ��ͬ�����顣���У�DataInputStream�������Ƕ�
ȡ��ͬ�Ļ���������Լ�String �������з������ԡ�read����ͷ������readByte(
)��readFloat()�ȵȣ��������Ӧ��DataOutputStream�����ǿ�ͨ����ݡ���������
���͵���ݴ�һ���ط��ᵽ��һ���ط�����Щ���ط������ɱ�10.1�ܽ����Щ�������
������ȡ���ڵ���ݣ����Լ����н������Ͳ���Ҫ�õ�DataInputStream�������������
����£�����һ�㶼��������Լ��������ݽ����Զ���ʽ����
ʣ�µ���������InputStream���ڲ���Ϊ��ʽ���Ƿ���л��壬�Ƿ�����Լ��������
���У��Լ��Ƿ��ܹ��ƻ�һ���ַ�ȵȡ�������������ر����ṩ�Թ���һ��������
��֧�֣�����֮���������Ϊ��֧��Java�������Ĺ������������ڳ�������һ�㶼��
�������ǡ�
Ҳ�?��ÿ�ζ�Ҫ�����Լ������룬�������ӵ����ĸ�IO�豸������IO�������ǵ�����
���ǽ�δ����������Ϊһ������������?ͬʱ�������������Ϊ��������
��10.3 FilterInputStream������
�� ���� �������������ʹ��
DataInputStream ��DataOutputStream����ʹ�ã�ʹ�Լ����Ի�ʽ��ȡһ�����е�
��������ͣ�int��char��long�ȵȣ� InputStream/����һ������Ľӿڣ��Ա��
ȡ���������
BufferedInputStream ����ÿ����Ҫ������ʱ�����������ԵĶ�ȡ��������������
���������ҡ� InputStream��û�п�ѡ�Ļ������С�����?�����ṩһ���ӿڣ�ֻ��
����ʹ�û������Ҫ��Ҫ��ͬһ���ӿڶ������ӵ�һ��
LineNumberInputStream �����������е��кţ��ɵ���getLineNumber()�Լ�setLineNu
mber(int) ֻ����Ӷ�����б�ŵ����������Կ�����Ҫͬһ������Ľӿڶ�������
PushbackInputStream ��һ���ֽڵĺ��ƻ������Ա���ƶ������һ���ַ� InputSt
ream��ͨ���ɱ�������ɨ������ʹ�ã���ΪJava��������Ҫ��һ�㲻���Լ��Ĵ�����
ʹ��
10.2.2 ͨ��FilterOutputStream��OutputStream��д�����
��DataInputStream��Ӧ����DataOutputStream�����߶Ը�������������Լ�String��
����и�ʽ��������������һ����ݡ������У��Ա��κλ����ϵ�DataInputStream����
��ض�ȡ���ǡ����з������ԡ�wirte����ͷ������writeByte()�� writeFloat()�ȵ�
��
�������һЩ����ĸ�ʽ��������������������̨����ʹ��PrintStream�����������
��ӡ�����л���������Լ�String�����ɲ���һ�����ڲ鿴�ĸ�ʽ������DataOu
tputStream����෴�����ߵ�Ŀ���ǽ���Щ�������һ��������У��Ա�DataInputStr
eam�ܹ���������¹������ǡ�System.out��̬������һ��PrintStream��
PrintStream��������Ҫ�ķ�����print()��println()�������ѽ����˸��Ǵ��?�ɴ�ӡ
������������͡�print()��println()֮��IJ����Ǻ����ڲ�����Ϻ���Զ����һ��
����
BufferedOutputStream����һ�֡�������������ָʾ�����ʹ�û��弼����ʹ�Լ���
��ÿ�ζ������������Ե�д����ݡ�ͨ����Ӧ����Ӧ�����ļ�����Ϳ�����IO��
��10.4 FilterOutputStream������
�� ���� �������������ʹ��
DataOutputStream ��DataInputStream���ʹ�ã��Ա���÷������ʽ�����������
��int��char��long�ȣ�д��һ������� OutputStream����������ӿڣ��Ա�����д
����������
PrintStream ���ڲ����ʽ�������DataOutputStream���Ƶ�����ݵġ��洢������Pr
intStream���Ƶ��ǡ���ʾ�� OutputStream����ѡһ���������ָʾ�������Ƿ���ÿ
������һͬˢ�£������Լ���OutputStream����Ӧ���á�final�����������ڡ�����
������Ҫ�õ���
BufferedOutputStream �������ÿ�η�����ݵ�ʱ��Ҫ���������Ե�д�룬Ҫ����
�����ڻ��������ҡ����ɵ���flush()���Ի��������ˢ�� OutputStream����ѡ������
��С�����?�����ṩһ���ӿڣ�ֻ�Ƿ���ʹ�û������Ҫ����Ҫͬһ���ӿڶ�����
�ӵ�һ��
10.3 �����ȱ�ݣ�RandomAccessFile
RandomAccessFile���ڰ�����֪���ȼ�¼���ļ����Ա���������seek()��һ����¼��
����һ����Ȼ���ȡ������Щ��¼������¼�ij��Ȳ���һ����ͬ��ֻҪ֪�������ж�
���Լ������ļ��δ����ɡ�
���ȣ������е���������RandomAccessFile������InputStream����OutputStream�ֲ��
����һ���֡�����ǡ��ʵ���� DataInput�Լ�DataOutput������������DataInputStrea
m��DataOutputStreamʵ�֣��ӿ�֮�⣬��������Щ�ֲ�ṹ����ʲô��ϵ��������û��
�õ�����InputStream��OutputStream��Ĺ��ܡ������õ���һ����ȫ����ɵ��ࡣ����
����ȫ�µ���ƣ������Լ���ȫ���������Ϊ���У�������֮����Ҫ������������ΪRa
ndomAccessFileӵ��������IO������ȫ��ͬ����Ϊ����Ϊ���ǿ���һ���ļ�����ǰ����
���ƶ�����������������£����Ƕ��������ģ���ΪObject��һ����ֱ�Ӽ̳��ˡ�ʹ
�á�
�Ӹ���˵��RandomAccessFile����DataInputStream��DataOutputStream������ʹ�á�
���У� getFilePointer()�����˽ǰ���ļ���ʲô�ط���seek()���������ļ��ڵ�һ
���µص㣬��length()�����ж��ļ�����ȡ����⣬������Ҫ��ʹ����һ���Ա���
����C��fopen()��ȫһ��ָ���Լ�ֻ��������"r"�������Ƕ�д��ʩ��"rw"������
��û���ṩ�ԡ�ֻд�ļ�����֧�֡�Ҳ����˵�������Ǵ�DataInputStream�̳еģ���ô
RandomAccessFileҲ�п����ܺܺõع�����
���и��ѶԸ��ġ�����������������ʱҪ���������͵������������������һ��ByteAr
rayInputStream������������ֻ�� RandomAccessFile�Ż��ṩ�������ֻ������ļ���
�ܲ�������������������������ʱ��BufferedInputStreamȷʵ�������DZ��һ��λ��
��ʹ��mark()�����ֵ�����ڵ����ڲ������У�������reset()�����Ǹ�λ�á�����Щ��
�����������ƣ��������ر����á�
10.4 File��
File����һ����ƭ�Ե����֡���ͨ������Ϊ��Ը�����һ���ļ�����ʵ�鲢����ˡ���
�ȴ��һ���ض��ļ������֣�Ҳ���Ŀ¼��һϵ���ļ������֡������һ���ļ�������
����list()������ѯ����������ص���һ���ִ����顣֮����Ҫ����һ�����飬���ij
�����ļ����࣬����ΪԪ�ص������ǹ̶��ġ���������õ�һ����ͬ��Ŀ¼�б?ֻ
�贴��һ����ͬ��File���ɡ���ʵ�ϣ���FilePath�����ļ�·�����ƺ���һ�����
�����֡����ڽ������������ʾ���ʹ������࣬���а�����ص�FilenameFilter��
�ļ�����������ӿڡ�
10.4.1 Ŀ¼�б���
���ڼ���������ۿ�һ��Ŀ¼�б?�������ַ�ʽ�г�File�������ڲ����Ա�������
�������µ���list()������File������һ�������б?Ȼ������������
�����ijЩ���ƣ�����Ҫʹ��һ����Ŀ¼���������������������ָ��Ӧ���ѡ��File
�����������ʾ��
����������������ӵĴ��루����ִ�иó���ʱ�������ѣ���ο���3��3.1.2С�ڡ���
ֵ������
449-450ҳ����
DirFilter�ࡰʵ�֡���interface FilenameFilter�����ڽӿڵ����⣬���ڵ�7�½���
�������������������ǿ���FilenameFilter�ӿ��ж�ô��
public interface FilenameFilter {
boolean accept(�ļ�Ŀ¼, �ִ���);
}
��ָ���������͵����ж����ṩ��һ����Ϊaccept()�ķ�����֮����Ҫ���������һ
���࣬�����ȫ��ԭ����ǰ�accept()�����ṩ��list ()������ʹlist()�ܹ����ص���
accept()���Ӷ��ж�Ӧ����Щ�ļ���������б��С���ˣ�ͨ�������ּ�����Ϊ���ص�
������ʱҲ��Ϊ�����ӡ� ��Ҳ����˵��DirFilter��һ�����ӣ���Ϊ��Ψһ�����þ���
����һ��������������list()����һ��FilenameFilter������Ϊ�Լ����Ա���ʹ�ã���
�������ܴ���ʵ����FilenameFilter���κ����һ��������������������������ڣ�
list()��������Ϊ��ʽ���ص���Ŀ�����ڴ������Ϊ���ṩ��������ԡ�
ͨ��DirFilter�����ǿ�������һ�����ӿڡ�ֻ����һϵ�з�����������������ֻ��д
��Щ���������ǣ����ٱ����ṩһ���ӿ������з����Ķ��塣����������£�DirFilte
r������Ҳ�ᴴ������
accept()�����������һ��File��������ָʾ����Ѱ��һ���ض��ļ���Ŀ¼��������
һ��String�����а���ҪѰ��֮�ļ������֡��ɾ���ʹ�û��������������֮һ����
��ʱ����Ҫʹ���ļ����סlist()������ΪĿ¼�����е�ÿ���ļ������accept()
����ʵ�ĸ�Ӧ�����ڡ���������accept()���صġ������������
Ϊȷ�����Dz�����ֻ���ļ�������û�а�·����Ϣ���������String��������
���ⲿ����һ��File����Ȼ�����getName()�����������ȥ������·����Ϣ��������
ƽ̨�صķ�ʽ�������accept()��String���indexOf()��������ļ����ڲ��Ƿ��
�������ִ� "afn"�������ִ����ҵ�afn����ô����ֵ����afn������������û��
�ҵ�������ֵ����-1��ע����ֻ��һ�����ִ��������ӣ�δʹ�ó���ı��ʽ��ͨ
�����������"fo?.b?r*"�����ַ�������ʵ�֡�
list()�������ص���һ�����顣�ɲ�ѯ�������ij��ȣ�Ȼ�������б���ѡ������Ԫ
�ء���C��C++��������Ϊ��ȣ������ڷ������ⷽ�������������Ϊ������һ�������
��
1. �����ڲ���
������һ�������ڲ��ࣨ���ڵ�7�½���������д�Ե÷dz����롣���ȴ�����һ��filte
r()���������ָ��FilenameFilter��һ�����
451-452ҳ����
ע��filter()���Ա���������final����һ���������ڲ���Ҫ��ģ�ʹ����ʹ�����Ա���
�����������һ������
֮������Ϊ��������ã�������FilenameFilter������ͬDirList2���ܵؽ����һ��
Ȼ�����ǿɲ�ȡ��һ���IJ������������ڲ��ඨ���list()��һ������ʹ���Եø�
�Ӿ���������ʾ��
452ҳ�³���
main()���ڵ��Ա�����final����Ϊ�����ڲ���ֱ��ʹ��args[0]��
��չʾ��������������ڲ�����ٴ���������࣬�Ա���һЩ���ӵ����⡣����Java
�е����ж����������йأ�������������һ���൱���õı��뼼�������һ���ô��ǽ�
�ض������������һ���ط�ͳһ�����������һ���棬������ɵĴ��벻��ʮ��������
��������ʹ��ʱ�������ء�
2. ˳��Ŀ¼�б�
��������Ҫ�ļ������ź���ķ�ʽ�ṩ������Java 1.0��Java 1.1��û���ṩ�������
֧�֣���Java 1.2��ʼ�ṩ�������Ա����õ�8�´�����SortVector����һ����ֱ�Ӽ���
�Լ��ij�������������
453-454ҳ����
�����������������Ľ����ǽ�path��·������list���б?����Ϊmain()�ı���
���������DZ������ij�Ա��ʹ���ǵ�ֵ���ڶ�����桱�ڼ䷽��ط��ʡ���ʵ�ϣ�
main()����ֻ�Ƕ�����в��Ե�һ�ַ�ʽ����ҿ��Կ�����һ���б?����ϣ���Ĺ�
�����ͻ��Զ���ʼ���б��������
��������Ҫ����ִ�Сд���������ղ���õ�һ��ȫ�����ʶ��Դ�д��ĸ��ͷ���б�
��������ȫ����Сд��ĸ��ͷ���б?Ȼ������ע�������ͬ��ĸ��ͷ��һ���ļ�
���У���д��ĸ������ǰ��ġ�����Ա���������˵����һ�ֲ��ϸ����Ϊ��Java 1
.2�ѳɹ������������⡣
10.4.2 ����봴��Ŀ¼
File�ಢ�������Ƕ�����Ŀ¼·�����ļ������ļ����һ����ʾ�������һ��File����
�½�һ��Ŀ¼����������һ�������Ŀ¼·�������������в����ڵĻ�����������˽�
�ļ������ԣ����ȡ���һ�������ڡ�����д���Եȣ������һ��File���״��һ
���ļ�����һ��Ŀ¼���Լ�ɾ��һ���ļ��ȵȡ����г�������չʾ���������File��ʣ
�µ���Щ������
454-456ҳ����
��fileData()�У��ɿ���Ӧ���˸����ļ����鷽������ʾ���ļ���Ŀ¼·���йص���Ϣ
��
main()Ӧ�õĵ�һ��������renameTo()�������������������ƶ���һ���ļ���һ��
ȫ�µ�·������·���ɲ������������������һ��File������Ҳ�������κγ��ȵ�Ŀ
¼��
�������������Ϳɷ����Լ����������⸴�ӳ̶ȵ�һ��Ŀ¼·������Ϊmkdirs()��
������������й�������Java 1.0�У�-d��־����Ŀ¼��Ȼ�ѱ�ɾ������Ȼ���ڣ�
����Java 1.1�У�Ŀ¼�ᱻʵ��ɾ��
10.5 IO���ĵ���Ӧ��
���ܿ��ڴ��ڴ���IO���࣬��ͨ����ֲ�ͬ�ķ�ʽ��ϵ�һ�𣬵�ʵ����ֻ�м��ַ�ʽ
�Żᾭ���õ���Ȼ�����С��������ܵõ���ȷ����ϡ���������൱��������չʾ
�˵���IO���õĴ�����ʹ�ã�����д�Լ��Ĵ���ʱ������Ϊһ���ο�ʹ�á�ע��ÿ����
�ö���һ��ע����ʽ�ı����ͷ�����ṩ���ʵ��Ľ�����Ϣ��
457-459ҳ����
10.5.1 ������
��Ȼ�����Ǿ���������һ�������ǽ���ʽ���������ӡ������̨���������ڵ�5�´�����
com.bruceeckel.tools�еõ��˼�
��1����4������ʾ���������Ĵ�����ʹ�ã����ܵ�4����չʾ�˽��������Ϊһ�����Թ�
�ߵļ�Ӧ�ã���
1. ����������ļ�
Ϊ��һ���ļ��Ա����룬��Ҫʹ��һ��FileInputStream��ͬʱ��һ��String��File��
����Ϊ�ļ���ʹ�á�Ϊ����ٶȣ�����ȶ��ļ����л��崦�?�Ӷ�������һ��Buff
eredInputStream�Ĺ������Ľ����Ϊ���Ը�ʽ������ʽ��ȡ������ݣ����ǽ��Ǹ�
����������һ��DataInputStream�Ĺ�������DataInputStream�����ǵ����գ�fi
nal�����������ǽ��ж�ȡ�����Ľӿڡ�
����������У�ֻ�õ���readLine()������������Ȼ�κ�DataInputStream����������
���á�һ���ִ��ļ�ĩβ��readLine()�ͻ᷵��һ��null���գ����Ա���ֹ���˳�whil
eѭ����
��String s2�����ھۼ�������ļ����ݣ�����������ӵ����У���ΪreadLine()ȥ����
��Щ�У�������ڱ�����ĺ��沿����ʹ��s2��������ǵ��� close()������ر�
�ļ����Ӽ�����˵����������finalize()ʱ����close()����������ϣ��һ�������˳���
�ͷ�����������������Ƿ���������ռ�����Ȼ��Java 1.0��һ���dz�ͻ���Ĵ���
Bug�����������������ᷢ����Java 1.1�У�������ȷ����System.runFinalizersO
nExit(true)������֤��Ϊϵͳ�е�ÿ���������finalize()��Ȼ���ȫ�ķ�����
��Ϊ�ļ���ȷ����close()��
2. ���ڴ�����
��һ���ֲ����Ѿ����������ļ����ݵ�String s2��������һ��StringBufferInp
utStream���ִ�������������������Ϊ�������IJ���Ҫ��ʹ��һ��String�����һ��
StringBuffer�������������read()���ζ�ȡÿ���ַ����䷢��������̨��ע��
read()����һ���ֽڷ���Ϊint�����Ա��뽫������Ϊһ��char���Ա���ȷ�ش�ӡ��
3. ��ʽ���ڴ�����
StringBufferInputStream�Ľӿ������ģ�����ͨ����Ҫ�����װ��һ��DataInputSt
ream�ڣ��Ӷ���ǿ���������Ȼ����ѡ����readByte()ÿ�ζ���һ���ַ���ô����
ֵ������Ч�ģ����Բ������÷���ֵ������ʱ�������롣�෴������available()����
�ж��ж����ַ���á������������չʾ����δ��ļ���һ�ζ���һ���ַ�
461ҳ����
ע��ȡ���ڵ�ǰ��ʲôý����룬avaiable()�Ĺ�����ʽҲ���������ġ�����������
��ζ�š����Բ��������ȡ���ֽ�����������һ���ļ���˵������ζ������ļ�������
һ����ͬ������������˵����ȴ�����в�ͬ�ĺ��塣�����ʹ��ʱӦ������ȫ��
Ϊ���������������������Ľ���Ҳ����ͨ���һ��Υ����ʵ�֡�Ȼ�������
��Υ���������������ȴ�Ե���Щ���С�á�
4. �еı�����ļ����
�������չʾ�����LineNumberInputStream�����������еı�š���������ɼ�
�����й������������������Ϊ���뱣�� LineNumberInputStream��һ�����ע����
����һ�ּ̳л��������Բ��ܼؽ�in4���͵�һ�� LineNumberInputStream�������
��li������ָ��LineNumberInputStream�ľ��Ȼ������Ļ��ϴ���һ�� DataInpu
tStream���Ա������ݡ�
�������Ҳչʾ����ν���ʽ�����д��һ���ļ������ȴ�����һ��FileOutputStream
������ͬһ���ļ����ӡ����ǵ�Ч�ʷ����ԭ���������һ��BufferedOutputStream
���⼸���϶�������һ�����������ȴ������ȷ�������������Ϊ�˽��и�ʽ������ת
����һ�� PrintStream�������ַ�ʽ����������ļ�����Ϊһ��ԭʼ���ı��ļ���ȡ��
��־DataInputStream��ʱ�����һ��������readLine()��һ��û�и����ִ����Զ�ȡ
����ͻ᷵��null��ÿ���ж�������Լ����кŴ�ӡ���ļ�����кſ�ͨ��li��ѯ��
�ɿ�������out1�ġ�һ����ȷָ����close()������������תͷ�������ٴζ�ȡ��ͬ��
�ļ��������������Ե��൱���á�Ȼ��ó���ֱ������Ҳû�м���ļ�IODemo.txt��
������ǰָ�����������Ϊ�Լ�����������ļ�����close()���Ϳ��ܷ��ֻ�����
��õ�ˢ�£�������Dz�����
10.5.2 �����
������Ҫ��������ǰ�����д����ݵķ�ʽ���ֵģ�һ�ְ��˵�ϰ��д�룬��һ��Ϊ��
�Ժ���һ��DataInputStream��д�롣RandomAccessFile�Ƕ����ģ����������ݸ�ʽ��
����DataInputStream��DataOutputStream��
5. ������ָ����
PrintStream�ܸ�ʽ����ݣ�ʹ���ܰ����ǵ�ϰ���Ķ�����Ϊ�������ݣ��Ա�����һ��
������ָ���������һ��DataOutputStreamд����ݣ�����һ��DataInputStream�ָ���
��ȡ����ݡ���Ȼ����Щ������������κζ�������������õ���һ���ļ�����������
���崦�?�Լӿ��д�ٶȡ�
ע���ִ�����writeBytes()д��ģ����writeChars()����ʹ�ú��ߣ�д��ľ���16λ
Unicode�ַ����� DataInputStream��û�в���ġ�readChars�����������Բ��ò���
readChar()ÿ��ȡ��һ���ַ����Զ�ASCII��˵�����������ǽ��ַ���Ϊ�ֽ�д��
���ں������һ�����У�Ȼ������readLine()���ַ�����ͨ��ASCII�ж��ء�
writeDouble()��double���ֱ��浽������У����ò����readDouble()�ָ���Ϊ��
��֤�κζ������ܹ�����������֪������������е�ȷλ�ã���Ϊ���п��ܽ���
���double�����Ϊһ�����ֽ����ж��룬Ҳ�п�����Ϊchar�������ʽ���롣��
�Ա���ҪôΪ�ļ��е���ݲ��ù̶��ĸ�ʽ��Ҫô���������Ϣ���浽�ļ��У��Ա���
ȷ�ж���ݵĴ��λ�á�
6. ��д�������ļ�
��������ָ��������RandomAccessFile��IO��νṹ��ʣ�ಿ�ּ�������ȫ����ģ�
������Ҳʵ����DataInput�� DataOutput�ӿڡ����Բ��ɽ�����InputStream��OutputS
tream������κβ��ֹ�������������Ҳ���ܽ�һ�� ByteArrayInputStream����һ����
�����Ԫ�ضԴ�ֻ����RandomAccessFile��һ���ļ�������ٶ� RandomAccessF
ile�ѵõ�����ȷ�Ļ��壬��Ϊ���Dz�������ѡ��
��������ѡ����ǵڶ�������������ɾ����ԡ�ֻ������r����ʽ��д����rw����
ʽ��һ��RandomAccessFile�ļ���
ʹ��RandomAccessFile��ʱ�����������ʹ��DataInputStream��DataOutputStream��
��Ϊ��ʵ���˵�ͬ�Ľӿڣ���������⣬���ɿ���������ʹ����seek()���Ա����ļ���
�����ƶ�����ij��ֵ�����ġ�
10.5.3 ��������
������ǰ���õ�һЩ������ʽ���漰���ļ����?���Դ��Ҳ��ỳ��ΪʲôҪ������
ô��Ĵ������롪��������װ��������һ��ȱ�㡣�����ֽ�����չʾ��δ�����ʹ��
�����ļ���ȡ��д�����õĿ�ݰ汾����Щ��ݰ汾������packagecom.bruceeckel.to
ols�У��Ե�5�¿�ʼ��������Ϊ�˽�ÿ�����ӵ����ڣ�ֻ�轫�������ʵ���Ŀ¼��
����Ӷ�Ӧ��package��伴�ɡ�
7. ���������
���봴��һ�����������һ�������DataInputStream�ж�ȡһ���ļ����ɽ�������
��װ��һ����ΪInFile�����ڡ�������ʾ��
463-464ҳ����
���۹�������String�汾����File�汾���������ڣ����ڹ�ͬ����һ��FileInputStrea
m��
�����������չʾ���������ڿ�����Ч���ٴ����ļ�ʱ�����ظ�ǿ����ɵ����⡣
8. ���������ʽ���ļ�
�����ͬ���͵ķ�������һ��PrintStream������д��һ�������ļ��������Ƕ�com.bru
ceeckel.tools����չ��
464-465ҳ����
ע����������ܲ���һ���ɻ����������������Υ��
9. �����������ļ�
����������ƵĿ�ݷ�ʽ�ɴ���һ����������ļ����������ݣ������˹ۿ�����
�ݸ�ʽ�෴����
465ҳ����
�dz���ֵ��ǣ�Ҳ�dz����ң���Java�������߾�Ȼû�뵽����Щ�����ʩֱ����Ϊ��
�ǵ�һ���ֱ��ṩ��
10.5.4 �ӱ������ж�ȡ���
��Unix���ȳ����ġ������롱������������Լ������������������Ϊ��Ja
va�ṩ����Ӧ��System.in��System.out�Լ� System.err������һ���飬��Ҷ����
���������System.out���б����������Ԥ��װ��һ��PrintStream���� System.e
rrͬ����һ��PrintStream����System.in��һ��ԭʼ��InputStream��δ�����κη�װ��
�?����ζ�ž�����ֱ��ʹ��System.out��System.err�����������ȷ�װSystem.in����
���ܴ��ж�ȡ��ݡ�
��������£�����ϣ����readLine()ÿ�ζ�ȡһ��������Ϣ��������Ҫ��System.in��װ
��һ��DataInputStream�С�����Java 1.0����������ʱ��ȡ�ġ��ϡ��취���ڱ����Ժ�
����һ��ῴ��Java 1.1�Ľ�������������Ǹ������ӣ������ǻ�Ӧ���Ǽ����ÿ
һ�����ݣ�
466ҳ����
֮����Ҫʹ��try�飬������readLine()���ܡ�������һ��IOException��ע��ͬ�����
������һ��ҲӦ��System.in���л��塣
������ÿ�������ж�Ҫ��System.in��װ��һ��DataInputStream�ڣ������Ե��е㲻��
�㡣������������Ʒ��������Ի����������ԡ�
10.5.5 �ܵ������
�����Ѽ�Ҫ������PipedInputStream���ܵ�����������PipedOutputStream���ܵ������
��������������ʮ����ϸ����������˵�������ò���Ȼ��ֻ���������˶��̴߳���
�ĸ���ſ�����������ǵļ�ֵ���ڡ�ԭ��ܼ���Ϊ�ܵ������������������
�߳�֮���ͨ�š��ⷽ������⽫�ڵ�14����һ��ʾ��˵����
10.6 StreamTokenizer
����StreamTokenizer�����Ǵ�InputStream��OutputStream����ģ�����ֻ��ͬInputS
tream����������ʮ��ǡ���ذ����ڿ��IO�����С�
StreamTokenizer�����ڽ��κ�InputStream�ָ�Ϊһϵ�С��Ǻš���Token������Щ�Ǻ�
ʵ����һЩ������ı��飬�м�������ѡ����κζ����ָ������磬���ǵļǺſ�����
���ʣ��м��ÿհף��ո��Լ�����ŷָ���
������һ���ij������ڼ�������������ı��ļ����ظ����ֵĴ���
467-469ҳ����
��ý���������ʽ�����������Java 1.0��Java 1.1��û���ṩ�κ���������
�Ա������Լ����֡����Ŀ�����һ��StrSortVector����ش�ɣ������ڵ�8�£�����
��һ�´�����������һ���֡���ס����������Ŀ¼����ʼĿ¼������λ����·���У�
�����������ȷ�ر��룩��
Ϊ���ļ���ʹ����һ��FileInputStream������Ϊ�˽��ļ�ת���ɵ��ʣ���FileInput
Stream�д�����һ�� StreamTokenizer����StreamTokenizer�У�����һ��Ĭ�ϵķָ���
�б?���ǿ���һϵ�з���������ķָ�������������� ordinaryChar()ָ����
���ַ�û���ر���Ҫ�����塱�����Խ���������������Լ��������κε��ʵ�һ����
�����磬 st.ordinaryChar('.')��ʾС��㲻���Ϊ���������ĵ��ʵ�һ���֡�����J
ava�����ṩ�������ĵ��У������ҵ����������Ϣ��
��countWords()�У�ÿ�δ��������ȡ��һ���Ǻţ���ttype��Ϣ���������ж϶�ÿ����
�Ų�ȡʲô����������Ϊ�Ǻſ��ܴ��һ����β��һ�����֡�һ���ִ�����һ���ַ�
�ҵ�һ���Ǻź��ѯHashtable counts����ʵ�����Ƿ��Ѿ��ԡ���Key������ʽ
����һ���Ǻš������ǿ϶��ģ���Ӧ��Counter��������������ͻ���ֵ��ָ������
���õ��ʵ���һ��ʵ������Ϊ�����½�һ��Counter������ΪCounter�������Ὣ
���ֵ��ʼ��Ϊ1���������Ǽ��㵥������ʱ��Ҫ��
SortedWordCount��������Hashtable��ɢ�б?��һ�����ͣ��������̳С���ִ��
��һ���ض����͵IJ��������Ծ���keys()�� values()�������������½�ʾ���������Բ�
��ʾӦʹ���Ǹ��̳У���Ϊ����Hashtable���������ﶼ�Dz��ʵ��ġ�������⣬������
һЩ������˵������getCounter()�������ڻ��һ���ض��ִ��ļ�����������sortedKe
ys()�������ڲ���һ��ö�٣����������ն��ı��� SortedWordCount�ӿڵ���ʽ��
��main()�ڣ�������SortedWordCount�ͼ����ļ��еĵ������������ܹ�ֻ��������
���롣�������Ϊһ���ź���ļ�ʣ��б���ȡ��һ��ö�١���������ÿ����
�Լ���ص�Count������ע��������cleanup()�������ļ�������رա�
������StreamTokenizer�ĵڶ������ӽ��ڵ�17���ṩ��
10.6.1 StringTokenizer
���ܲ�����ҪIO���һ���֣���StringTokenizer�ṩ����StreamTokenizer�����ƵĹ�
�ܣ�����������һ��������
StringTokenizer��������ÿ�η����ִ��ڵ�һ���Ǻš���Щ�Ǻ���һЩ���Ʊ�վ���ո�
�Լ����зָ��������ַ���ˣ��ִ���Where is my cat?���ļǺŷֱ��ǡ�Where����
��is������my���͡�cat?������StreamTokenizer���ƣ����ǿ���ָʾ StringTokenize
r�������ǵ�Ը��ָ����롣������StringTokenizer��ȴ��Ҫ����������һ������
����������ʹ�õķָ��ִ���ͨ�����������и��ӵIJ�����Ӧʹ��StreamTokenize
r��
����nextToken()��StringTokenizer���������ִ��ڵ���һ���Ǻš��÷���Ҫô����һ
���Ǻţ�Ҫô����һ�����ִ�����ʾû�мǺ�ʣ�£���
��Ϊһ�����ӣ���������ִ��һ�����ľ䷨��������ѯ��������У��˽���Ӱ�ʾ
���ǿ�������˵ĺ��塣
471-472ҳ����
������������ÿ���ִ������ǽ���һ��whileѭ���������ǺŴ��Ǹ��ִ���ȡ������ע
���һ��if��䣬����ǺżȲ��ǡ�I����Ҳ���ǡ�Are�����ͻ�ִ��continue������ѭ
����㣬��һ�ο�ʼ��������ζ�ų�Ƿ���һ����I�����ߡ�Are�����Ż�����õ��Ǻ�
����ҿ�������==����equals ()������������������ֲ���ı��֣���Ϊ==�Ƚϵ���
���ֵ����equals()�Ƚϵ������ݡ�
analyze()����ʣ�ಿ�ֵ�����������I am sad�����Һ����ˡ���I am nothappy����
�Ҳ����֣����ߡ�Are you sad?�����㱯���𣿣�����ľ䷨��ʽ����û��break��䣬
�ⷽ��Ĵ����������ܸ��ɢ�ҡ����Ӧע���һ�����͵Ľ�������˵��ͨ��������Щ
�Ǻŵ�һ��������ڶ�ȡ�¼Ǻŵ�ʱ����һС�δ����ڱ�����ƶ���
������Σ�ֻӦ��StringTokenizer����StreamTokenizerһ�ּ�������ļ���ʽ
��Ȼ�������һ���ִ���Ҫ���мǺŴ��?����StringTokenizer�Ĺ���ʵ�����ޣ���
ôӦ������ȫ�����������StringBufferInputStream����ת����һ��������������
����һ�����ܸ�ǿ���StreamTokenizer��
10.7 Java 1.1��IO��
�����ʱ��һ��������һ������֮�У������Ƿ����IO������һ����Ʒ�������
����Ҫ����Ĵ������������������һ�ָ�Źֵ��������ʵ�ϣ� Java 1.1��IO��
�������һЩ�ش�ĸĽ���Reader��Writer��ʱ��������˵ĵ�һ��ӡ������
һ��������������滻ԭ���� InputStream��OutputStream�ࡣ��ʵ�鲢����ˡ���
�ܲ�����ʹ��ԭʼ��������ijЩ���ܣ���ʹ�����ǣ���ӱ������յ�һ��������Ϣ��
����ԭ�����������Ȼ�õ��˱������Ա�ά�������ݣ����ң�
(1) ����ʽ��νṹ����������࣬����Sun��˾���Բ��������ʽ�������
(2) ���������£�������Ҫ���½ṹ�е�������ʹ���Ͻṹ�е��ࡣΪ�ﵽ���Ŀ��
����Ҫʹ��һЩ���š��ࣺInputStreamReader��һ�� InputStreamת����Reader��Out
putStreamWriter��һ��OutputStreamת����Writer��
������ԭ����IO������ȣ�������Ҫ����IO�����в�θ��ķ�װ��ͬ��أ���Ҳ����
װ����������һ��ȱ�㡪����ҪΪ���������Ը�����ۡ�
֮������Java 1.1�������Reader��Writer��Σ�����Ҫ��ԭ����ǹ�ʻ���������
ʽIO����νṹֻ֧��8λ�ֽ��������ܺܺõؿ���16λ Unicode�ַ�����Unicode��
Ҫ������ǹ�ʻ�֧�֣�Java�ں���char��16λ��Unicode�������������Reader�� Wr
iter��Σ����ṩ������IO�����е�Unicode��֧�֡����֮�⣬�¿�Ҳ���ٶȽ�������
�����ɱȾɿ�������С�
�뱾������ط�һ���һ������ṩ�����һ�����������ٶ�������������ĵ��㶨��
�е�ϸ�ڣ����緽�����꾡�б�ȡ�
10.7.1 ��ݵķ��������
Java 1.0�ļ�������IO����ж�Ӧ��Java 1.1�࣬�����ṩ�ڽ���Unicode���?�ƺ�
������������ǡ�ȫ��ʹ�����࣬��Ҳ��Ҫ�þɵġ�����ʵ�������û����ô��
��Щʱ�������ܵ�����Ƶ�һЩ���ƣ����Dz��ò�ʹ��Java 1.0��IO���ࡣ�ر�Ҫָ
�����ǣ��ھ�����Ļ����¼���java.util.zip�⣬���������ɵ������������������
�������ǡ������ԡ���ʹ��Reader��Writer�ࡣ�����벻��ͨ����룬��֪�����뻻��
��ʽ�⡣
�������ű��־ɿ����¿�ֱ��ܽ�����Ϣ���������֮��Ķ�Ӧ��ϵ��
���𣦽��գ�Java 1.0�� ��Ӧ��Java 1.1��
474ҳ����������
���Ƿ��ּ�ʹ����ȫһ�£����ɿ�����еĽӿ����½ӿ�ͨ��Ҳ�����Ƶġ�
10.7.2 �����������Ϊ
��Java 1.0�У������ͨ��FilterInputStream��FilterOutputStream�ġ�װ��������D
ecorator��������Ӧ�ض�������Java 1.1��IO����������һ˼�룬��û�м��������
��װ����������ͬ��filter������������������������һ��������ͨ��۲���IJ��
�ṹ���������������˳������������
���������ű���У���Ӧ��ϵ����һ�ű�Ҫ�ֲ�һЩ��֮���Ի����������������
����֯��ɵģ�����BufferedOutputStream�� FilterOutputStream��һ�����࣬����B
ufferedWriter������FilterWriter�����ࣨ�Ժ�����˵����������һ�������࣬��û��
�Լ���������߽�������Ķ�����Ҳû��һ����ռλ����ã����Բ��ط��ĵ�Ѱ��
--
"` O| " jVHT T ~ "" "
[m[1;35m�� ��Դ:���ɽ��ˮ bbs.neu.edu.cn��[FROM: 219.216.70.3][m
Technical Details
Message-ID:
<492eBa$Bix@bbs.neu.edu.cn>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.media.kyoto-u.ac.jp!news.neu.edu.cn!NEUShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: f6cb0,7522dd8ddc8d1c37,start X-Google-Attributes: gidf6cb0,public X-Google-ArrivalTime: 2003-10-27 17:46:25 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.media.kyoto-u.ac.jp!news.neu.edu.cn!NEU From: amou.bbs@bbs.neu.edu.cn (�˺�2��) Newsgroups: cn.bbs.comp.lang.java Subject: Java���˼��---��10�� Java IOϵͳ Date: 28 Oct 2003 01:45:50 GMT Organization: ��ɽ��ˮ Message-ID: <492eBa$Bix@bbs.neu.edu.cn> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit X-Filename: java/M.1067305524.A Lines: 501