博博jsp教程:第6章对文件的操作(编辑修改稿)内容摘要:

FileOutputStream outFile= new FileOutputStream(e:/,true)。 BufferedOutputStream bufferout=new BufferedOutputStream(outFile)。 (buffer)。 ()。 ()。 } catch(IOException ioe) { (File Write Error!)。 } % /body /html 字符流  前面我们学习了使用字节流读 /写文件 ,但是字节流不能直接操作 Unicode 字符 ,所以 java提供了字符流.由于汉字在文件中占用 2个字节,如果使用字节流读写文件会出现乱码现象,采用字符流就可以避免乱码.在 Unicode字符集中,一个汉字被看作一个字符.  字符流有两个超类,也是两个抽象类:字符输入流(Reader)和字符输出流 (Writer). Reader类是所有字符输入流的父类; Writer类是所有字符输出流的父类。 1. Reader类  下面是对 Reader类的描述 (1). Reader的常用方法  int read() 输入流调用该方法从源中读取一个字符,该方法返回一个参数( 0~65535之间的一个整数, Unicode字符值)。 如果未读出字符就返回 1。  int read(char b[]) 输入流调用该方法从源中读取 字符数组 b中,返回实际读取的字符数目。 如果到达文件的末尾,则返回 1。  int read(char b[],int off , int len) 输入流调用该方法从源中读取 len个字符并存放到字符数组 b中,返回实际读取的字符数目。 如果到达文件的末尾,则返回 1。 其中, off参数表明,从数组 b的 off位移处开始存放数据。  void close() 输入流调用该方法关闭输入流  long skip(long numBytes)输入流调用该方法跳过 numBytes个字符,并返回实际跳过的字符数目 (2) . Reader的类层次 Reader类的层次结构图如图 64所示。 Reader InputStreamReader FilterReader BufferedReader PipedReader CharArrayReader StringReader FileReader LineNumberReader PushbackReader 图 64 Reader类层次 2. Writer类 下面是对 Writer类的描述。 (1). Writer的常用方法  void write( int n)向输出流写入一个 Unicode字符值 (数字 )  void write(char b[])向输出流写入一个字符数组  void write(char b[],int off, int length)从给定字符数组中其实与偏移量 off处取 len个字符写到输出流。  void write(String str) 向输出流写入一个字符串  void close()关闭输出流 (2) Writer的类层次 Writer类的层次结构图如图 65所示。 Writer OutputStreamWriter FilterWriter BufferedWriter PipedWriter CharArrayWriter StringWriter PrintWriter FileWriter 图 65 Writer类层次  字符流有多个子类,能直接对文件进行读或写的子类有: 文件字符输入流 (FileReader)和文件字符输出流(FileWriter).下面是它们的构造方法。 1. FileReader类的构造方法:  public FileReader(File file) throws  public FileReader(String name) throws 其中, name为文件名, file为 File对象,即可以用文件名或 File对象构造文件输入流对象。 通过文件输入流对象读文件。 2. FileWriter类的构造方法:  public FileWriter(File file) throws IOException  public FileWriter(String name) throws IOException  public FileWriter(File file, boolean append) throws IOException  public FileWriter(String name, boolean append) throws IOException 其中, name为文件名, file为 File对象, append表示文件的写入方式。 append的值为 false时,为重写方式,即要写入的内容从文件开头写入,覆盖以前的文件内容;当append的值为 true时,为添加方式,即要写入的内容添加到文件的尾部。 append的默认值是 false。 可以以文件名或File对象构造文件输出流对象,通过文件输出流对象写文件。 FileReader读文件 [例子 ]在客户端显示文件 e:/。 程序结构: 程序名: 程序算法: 1. 以文件名“ e:/”为参数,构造文件对 象:f 2. 以文件对象 f为参数,构造字符输入流: in 3. 每次从 in中读取 n个字符 ,保存在字符数组 b中 4. n等于 1时,结束循环,否则,把数组 b以字符串的方式输出到客户端,重复步骤 3。 程序代码: %@ page contentType=text/html。 charset=GB2312 % %@ page import=.*% HTML BODY % File f=new File(e:/)。 try { FileReader in=new FileReader(f)。 String str=null。 char b[]=new char[50]。 int n=0。 while((n=(b))!=1) { str=new String(b,0,n)。 (str)。 } ()。 } catch(IOException e) { } % /BODY /HTML 用类 FileWriter写文件 [例子 ] 把从客户端输入的文本,添加到服务器的e:/。 程序结构: 程序名: 程序算法: 1. 创建一个表单,包含一个文本框,文本框名 是 boy 2. 获取文本框数据,保存在字符串 str中 3. 将 str进行编码 4. 以“ e:/”为参数,创建一个输出 流 :wf 5. 将 str写入到输出流 wf中。 程序代码: %@ page contentType=text/html。 charset=GB2312 % %@ page import=.*% HTML BODY bgcolor=cyanFONT size=3 FORM action= method=post name=form INPUT type=text name=boy INPUT TYPE=submit value=保存 name=submit /FORM % String str=(boy)。 if(str==null) str=。 byte b[]=(ISO88591)。 str=new String(b)。 try { FileWriter wf=new FileWriter(e:/,true)。 (str)。 //将字符串写入输出流指向的文件 ()。 //关闭输出流 (将数据存入到文件 :e:/ )。 } catch(IOException ioe) { (File Write Error!)。 } % /body /html 字符缓存流  由于使用 FileReader类和 FileWriter类读写文件效率不高,在实际应用中,常常使用字符缓存流来读写文件。 字符缓存流有:字符缓存输入流 (BufferedReader)和字符缓存输出流(BufferedWriter)。 常用构造方法 1. BufferedReader类的构造方法 BufferedReader (Reader in ) BufferedReader (Reader in int size) 2. BufferedWriter类的构造方法 BufferedWriter (Writer out ) BufferedWriter (Writer out int size) 其中, in是字符输入流对象, out是字符输出流对象, size是缓冲区大小。 实际应用中,为了提高文件读写的效率, FileReader流经常和 BufferedReader流配合使用; FileWriter流经常和BufferedWriter流配合使用。 下面是构造字符缓存流的方法: : 假设需要使用字符缓存流读文件 ,则需要对文件 进行两次封装: 第一步:构造文件字符输入流 FileReader in=new FileReader () 第二步:构造字符缓存输入流 BufferedReader inbuffer= BufferedReader (in) 这样,我们就可以让 inbuffer调用 readLine()方法读取文件内容, inbuffer读取文件的过程中,会进行缓存处理,提高读取的效率. : 假设需要使用字符缓存流写文件 ,则需要对文件 进行两次封装: 第一步:构造文件字符输出流 FileWriter out=new FileWriter () 第二步:构造缓存输出流 BufferedWriter outbuffer= BufferedWriter (out) 这样, 我们就可以让 outbuffer调用 write()方法向文件写入内容时会进行缓存处理,提高写入的效率。 需要注意的是,写入完毕后,须调用 flush()方法将缓存中的数据存入文件。 用类 BufferedRdader读文件 [例子 ] 用字符缓存读文件 e:/,并输出到客户端。 程序结构: 程序名: 程序算法: 1.以文件名 e:/为参数,构造文件对象: f 2. 以文件对象 f为参数,构造输入流: in 3. 以输入流 in为参数,构造缓存输入流: bufferin 4. 每次从 bufferin中读取一行数据,保存在字符串 str中 5. str等于 null时结束循环,否则,把字符串 str输出到 客户端,重复步骤 4。 程序代码: %@ page contentType=text/html。 charset=GB2312 % %@ page import=.*% HTML BODY % File f=new File(e:/)。 try { FileRea。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。