在保存数据时,可以选择二进制格式或文本格式。
例如:整数1234存储成二进制数时,它被写为由字节 00 00 04 D2构成的序列,(十六进制表示法),而存储成文本格式,它被存为了字符串“1234”。
虽然,二进制格式的 I/O 告诉且高效,但是不宜人来阅读!
关于文本格式的 I/O 流,我们需要考虑 字符编码(character encoding),UTF-16编码方式,字符串“1234”编码为00 31 00 32……(十六进制)。但是,
ISO 8859-1这种在美国和西欧最常用。最常用的:
InputSreamReader in = new InputStreamReader( System.in )
PrintWriter out = new PrintWriter( " test.txt " )
如何读入文本输入
二进制格式写出数据,需要使用 DataOutputStream、DataInputStream
以文本格式写出护具,需要使用PrintWriter
JavaSE 5.0之前,唯一方式通过BufferedReader类,采用 一个 readLine 方法,读入一行文本。
BufferedReader in = new BufferedReader( new InputStreamReader(new FileinputSream(“test.txt”),“UTF-8”) )
readLine 在没有输入是返回 null,因此,典型的输入:
while( (line=in.readLine() )!= null ){ do something; }
ZIP文档
值以压缩格式存储了一个或多个文件,每个ZIP文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息。
例如:
ZipInputStream zin = new ZipInputStream( new FileInputStream( zipname ) );
ZipEntry entry;
while( (entry = zip.getNextEntry()) != null ){
analyze entry
read the contents of zin
zin.closEntry();
}
zin.close();
而当我们
Scanner in = new Scanner( zin ) ;
while( in.hasNextLine() )
do something with in.nextLine()
注意:读入zip项后,不要关闭zip输入流,也不要将其传递给可能关闭它的方法,否则,你就不能再读入后续的项了。
FileOutputStream fout = new FileOutputStream( " test.zip " );
ZipOutputStream zout = new ZipOutputStream( fout );
for all files{
ZipEntry ze = new ZipEntry( filename );
zout.putNextEntry( ze );
send data to zout
zout.closeEntry();
}
zout.close();
java.util.zip.ZipInputStream :
ZipInputStream( InputStream in ) 创建一个 流。
ZipEntry getNextEntry() 为下一项返回ZipEntry对象,或者在没有更多的项时,返回null。
void closeEntry() 关闭这个ZIP文件中当前打开的项,之后可以通过使用getNextEntry()读入下一项。
java.util.zip.ZipOutputStream
ZipOutputStream( OutputStream out ) 创建一个降压所数据写到指定的 OutputStream 的ZipOutputStream
void putNextEntry( ZipEntry ze ) 将给定的ZipEntry 中的信息写出到流中,然后通过write()写出到这个流中
closeEntry()
setLevel( Int level )
java.util.zip.ZipEntry
long getCrc() 返回这个ZipEntry的Crc32校验和的值
String getName() 返回这一项的名字
long getSize() 返回这一项未压缩的尺寸,或者在未压缩的尺寸不可知的情况下返回-1.
boolean isDirectory() 是否为目录 void setMethod ( int method )[ 压缩方法 ]
void setSize() 设置这一项的尺寸,只有压缩方法为stored时才必须。
void setCrc()
java.util.zip.ZipFile
ZipFile ( String name )
ZipFile( FIle file ) 创建一个ZipFile,用于从给定的字符串或File对象中读入数据。
Enumeration entries()
ZipEntry getEntry() 返回给定名字所对应的项,或者没有对应返回null
InputStream getInputStream( ZipEntry ze ) 返回用于给定项的InputStream
String getName() 返回这个ZIP文件的路径