打印本文 打印本文  关闭窗口 关闭窗口  
等级考试二级JAVA考点分析之输入输出及文件操作
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:42:48  文章录入:杜斌  责任编辑:杜斌

7.1概述
考点:1
流的概念和Java语言中的I/O流
  1.流的基本概念
  流是指在计算机的输入与输出之间流动的数据序列:从数据源串行地流向数据目的地。
  (1)输入流是指从外设流入计算机的数据流。
  (2)输出流是指从计算机流向外设的数据流。
  2.Java语言中的I/O流
  Java的I/O功能主要是通过输入输出类库java.io包来实现的,java.io包中包括了可以处理字节流、字符流、文件流和对象流等的类,这些类主要可以分为如下几个:
  (1)接口:处理字节流的DataInput和DataOutput;处理对象流的ObjectInput和Obj ectOutput;筛选文件名的FileNameFilter;处理对象流的Serializable。
  (2)抽象类:处理字节流的InputStream和OutputStream;处理过滤流的FilterOutputStream和FilterInputStream;处理字符流的Reader和Writer;处理压缩流的InflaterInputStream和DeflaterOutputStream。
  (3)非字符输入/输出流,分别通过继承抽象类InputStream和OutputStream实现,输入流包括字节数组作为输入流的ByteArrayInputStream;处理磁盘文件的FileInputStream;实现线程通信的PipedInputStream;过滤器输入流FilterInputStream;输入流的连接SequenceInputStream,输出流则包括和输入流相对应的类。
  (4)过滤字节输入/输出流,分别通过继承抽象类FilterlnputStream和FilterInputStream实现,输入流包括BufferedInputStream类,Checked InputStream类等输出流则包括和输入流相对应的类。
  (5)压缩文件输入/输出流,分别继承自InflaterInputStream和DeflaterOutputStream类。
  (6)字符输入/输出流,分别继承自抽象类Reader和Writer。
  (7)同时兼有输入和输出功能的RandomAccessFile类,实现DataInput和DataOutput接口,直接继承自Object类,可以在文件的任意位置读写记录。
7.2文件和文件I/O
考点:2
文件和文件I/O
  1.文件
  File类是Java.io包中专门处理文件并获取文件有关信息的一个类。Java语言通过File类建立与磁盘文件的联系。对File类的理解,需要注意如下几点:
  (1)File类不是InputStream类或者OutputStream类的子类,它不负责数据的输入输出,而是专门用来管理文件和目录。
  (2)在Java语言中,目录也作为File类的对象进行处理。
  (3)每个File类的对象都表示一个文件或目录,调用其方一法就可以获得该文件或目录的属性,完成对文件或目录的常用管理操作。
  (4)流类关心的是文件的内容,而File类关心的是文件在磁盘上的存储。
  2.File类的方法
  (1)创建文件,与一般的类的初始化格式一样:
  File name=new File(<pathname>);
  File name=new File(<path>,<filename>);
  说明:构造函数的参数可以是路径文件名,也可以是路径和文件名。
  (2)文件名操作,有getName(),getParent(),getPath(),list(),getCanonicalPath()throws IOException等。
  (3)测试文件属性操作,有isDirectory(),isAbsolute(),exists(),canRead(),canWrite()等。
  (4)文件信息操作,有delete(),deleteOnExit(),length(),lastModified()等。
  (5)目录操作,有mkdir(),mkdirs(),list(),listRoots()等。
  (6)其他,有hashCode(),setLastModified(long time),setReadOnly()等。
  3.随机文件流
  RandomAccessFile类用来实现对文件的随机读写操作。它继承自Object类,实现了DataInput和DataOutput接口。构造方法如下:
  RandomAccessFile raf=new RandomAccessFile(<文件名>,<访问模式>):
  说明如下:
  (l)文件名参数,可以是File类对象或文件名字符串的形式提供。
  (2)访问模式,有2种取值:“r”只读,或者“rw”读写。
  4.压缩文件流
  压缩文件流被定义在java.util.zip包和Java.util.jar包中,包括压缩文件输入流ZipInputStream和压缩文件输出流ZipOutputStream。编写程序时一般使用压缩文件流的步骤如下:
  (1)将一个Zip文件作为FileInputStream构造方法的参数。
  (2)将上述FileInputStream对象作为ZipInputStream构造方法的参数。
  (3)再将上一步中的ZipInputStream对象作为InputStreamReader构造方法的参数。
  (4)最后InputStrearn Reader对象作为BufferedReader构造方法的参数,然后就可以使用readLine()等方法进行操作。
7.3字节I/O流
考点:3
字节I/O流
  1.字节输入流
  字节输入流继承自InputStream类,并且使用DataInputStream实现DataInput接口。编程时一般的步骤如下:
  (1)字节数据的来源(二进制文件)作为FileInputStream的构造方法的参数,实例化一个 FileInputStream对象。
  (2)FileInputStream对象作为DataInputStream的构造方法的参数。
  (3)然后就可以使用InputStream类中的方法,进行字节输入流的操作。
  InputStream类的方法有:read(),available(),skip(),close()等。


  2.字节输出流
  字节输出流继承自OutputStream类,并且通过DataOutputStream实现DataOutput接口。编程时的一般步骤和上述字节输入流相似,只是将相应的输入流类换成输出流类即可。
  OutputStream类的方法有:writeDouble(),writeInt(),writeChar(),write(),flush()等。
  3.读写内存
  在Java.io包中,能够直接访问内存的类有3个。
  (1)ByteArrayInputStream,用于从字节数组中读取数据,主要方法有:read(),skip(),reset(),close()等。
  (2)ByteArrayOutputStream,用于向字节数组写入数据,主要方法有:write(),writeTo(),reset(),close()以及toByteArray(),size(),toString()。
  (3)StringBufferlnputStream类。
  这几个类都继承自InputStream和OutputStream类。
7.4字符类I/O流
考点:4
字符类I/O流
  字符类I/O流是用于处理16位Unicode码的流,这些类继承自Reader和Writer类。编程时使用字符类I/O流操作带有分隔符的Unicode码文件的一般步骤如下:
  (l)将Unicode文件作为参数分别构造FileReader和FileWriter对象。
  (2)以FileReader对象作为参数构造BufferedReader对象。
  (3)以FileWriter对象作为参数构造PrintWriter对象。
  (4)调用BufferedReader对象的readLine()方法读取Unicode码数据或者按照分隔符读取某个记录的每个字段。
  (5)调用PrintWriter对象的println()方法写入Unicode码记录或数据。
  1.字符类输入流
  字符类输入流都继承自Reader类,实现从数据源读取Unicode码序列的操作。
  (1) FileReader类继承自InputStreamReader类,用于读取Unicode码。
  (2 ) BufferedReader类继承自Reader类,它使用缓冲技术,提高了字符传输的效率。
  ( 3 ) InputStreani Reader类和BufferedReader类都继承自Reader类。
  (4)Reader类包含的方法有:read),skip(),markSupported),mark(),reset()等。
  (5)InputStreamReader类包含的方法有:getEncoding),InputStreamReader(),close()等。
  (6)BufferedReader类包含的方法有:readLine(),BufferedReader()等。
  2.字符类输出流
  字符类输出流继承自Writer类,实现向数据目的地输出Unicode码序列的操作。
  (1)PrintWriter和OutputStreamWriter是Writer的子类。
  (2)PrintWriter类用于输出字符,其方法println()实现向输出流写入字符数据。
  (3)OutputStreamWriter类的子类FileWriter,实现向文本文件写入字符数据。
  (4)Writer类包含的方法:write(),flush()等。
  (5)OutputStreamWriter类包含的方法:OutputStreamWriter(),close()等。
  (6)BufferedWriter类包含的方法:newLine(),BufferedWriter()等。
7.5过滤流和管道流
考点:5
过滤流
  在Java中,过滤流提供了对I/O的同步处理机制。java.io包中的FilterInputStream和FileOutputStrean抽象类实现了过滤流。
  (l)使用过滤流之前,需要将该过滤流和一个I/ O流相连。
  (2)BufferedInputStreamt和BufferedOutputStream类分别继承自  FilterInputStream和FileOutputStream类,使用缓冲技术,提高了效率。
  (3)DataInputStream和DataOutputStream可以用于读写Java语言的基本数据类型,不用做转换。
考点:6
管道流
  在Java中,不同的Java程序、线程或代码段相互之间的数据交换通过管道流实现。java.io包中的2个类:PipedInputStream和PipedOutputStream类实现了管道机制。
                  
7.6 J2SE1. 4中的新I/O功能
考点:7
J2SE1.4中的新I/O功能
  J2SE1.4提供了一些新的I/O功能,被封装在java.nio包中。其特点是:使用内存映射技术、文件锁定、字符及编码、非阻塞I/O等。
  (1)内存映射,将磁盘文件映射到内存,提高读写速度。
  (2)文件通道,为磁盘文件映射到内存提供通道。
  (3)CRC32类,进行差错控制。
7.7 I/O流和正则表达式
考点:8
I/O流和正则表达式
  Java中,使用正则表达式包(java.util.regex)和java.net. URL类结合,处理网络上的字符输入流的模式字符串的搜索。java.util.regex包中有两个类。
  (1)Pattern(模式类),其方法compile ( String expression,int flags )首先将正则表达式字符串编译成模式对象,然后进行快速匹配。参数中,expression是一个正则表达式,flags是表达式字符的一些特征。该类的方法有:matcher()等。
  (2) Matcher(匹配器类),用于比较输入字符串和模式串该类的方法有:matches(),find(),start(),end()等。
打印本文 打印本文  关闭窗口 关闭窗口