JSP 中的文件操作

JSP 中的文件操作
1.File 类
 File 类的对象主要用来获取文件本身的一些信息。
 创建一个 File 对象的构造方法有3 个:
  File(String filename);
  File(String directoryPath,String filename);
  File(File f, String filename);
 filename 是文件名字,directoryPath 是文件的路径,f 是指定成一个目录的文件。
 使用 File(String filename)创建文件时,该文件被认为是与当前应用程序在同一目录中,由于JSP 引擎是在bin 下启动执行的,所以该
 文件被认为在下列目录中:D:\Tomcat\jakarta-tomcat-4.0\bin\ 。
 1.获取文件的属性
  1. public String getName():获取文件的名字。
  2. public boolean canRead():判断文件是否是可读的。
  3. public boolean canWrite():判断文件是否可被写入。
  4. public boolean exits():判断文件是否存在。
  5. public long length():获取文件的长度(单位是字节)。
  6. public String getAbsolutePath():获取文件的绝对路径。
  7. public String getParent():获取文件的父目录。
  8. public boolean isFile():判断文件是否是一个正常文件,而不是目录。
  9. public boolean isDirectroy():判断文件是否是一个目录。
  10. public boolean isHidden():判断文件是否是隐藏文件。
  11.public long lastModified():获取文件最后修改的时间(时间是从1970 年午夜至文件最后修改时刻的毫秒数)
 2.创建目录
  (1)创建目录
   File 对象调用方法:public boolean mkdir()创建一个目录,如果创建成功返回true,否则返回false(如果该目录已经存在将返回false)。
  (2)列出目录中的文件
   如果 File 对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录:
    public String[] list():用字符串形式返回目录下的全部文件,
    public File [] listFiles():用File 对象形式返回目录下的全部文件。
  (3)列出指定类型的文件
   可以使用File 类的下述两个方法,列出指定类型的文件:
    public String[] list(FilenameFilter obj); 该方法用字符串形式返回目录下的指定类型的所有文件。
    public File [] listFiles(FilenameFilter obj); 该方法用File 对象返回目录下的指定类型所有文件。
   FilenameFile 是一个接口,该接口有一个方法:
    public boolean accept(File dir,String name);
   当向 list 方法传递一个实现该接口的对象时,list 方法在列出文件时,将让该文件调用accept 方法检查该文件是否符合accept 方法指定的目录和文件名字要求。
 3.删除文件和目录
  File 对象调用方法public boolean delete()可以删除当前对象代表的文件或目录,如果File 对象表示的是一个目录,则该目录必须是一个空目录,删除成功返回true。
2 使用字节流读写文件 
 java.io 包提供大量的流类。所有字节输入流类都是InputStream(输入流)抽象类的子类,而所有字节输出流都是OutputStream(输出流)抽象类的子类。
 InputStream 类的常用方法:
  int read(): 输入流调用该方法从源中读取单个字节的数据,该方法返回字节值(0~255 之间的一个整数),如果未读出字节就返回-1。
  int read(byte b[]): 输入流调用该方法从源中试图读取b.length 个字节到b 中,返回实际读取的字节数目。如果到达文件的末尾,则返回-1。
  int read(byte b[], int off, int len): 输入流调用该方法从源中试图读取len 个字节到b 中,并返回实际读取的字节数目。
  如果到达文件的末尾,则返回-1,参数off 指定从字节数组的某个位置开始存放读取的数据。
  void close(): 输入流调用该方法关闭输入流。
  long skip(long numBytes): 输入流调用该方法跳过numBytes 个字节,并返回实际跳过的字节数目。
 OutputStream 类的常用方法:
  void write(int n): 输出流调用该方法向输出流写入单个字节。
  void write(byte b[]): 输出流调用该方法向输出流写入一个字节数组。
  void write(byte b[],int off,int len): 从给定字节数组中起始于偏移量off 处取len 个字节写到输出流。
  void close(): 关闭输出流
 2.1.FileInputStream 和 FileOutputStream 类
  FileInputStream 该类是从InputStream 中派生出来的简单输入类。该类的所有方法都是从InputStream 类继承来的。
  两个构造方法:
   FileInputStream(String name);   name:文件名
   FileInputStream(File file);   file:File对象
   参数name 和file 指定的文件称做输入流的源,输入流通过调用read 方法读出源中的数据。
  与FileInputStream 类相对应的类是FileOutputStream 类。FileOutputStream 提供了基本的文件写入能力。除了从OutputStream 类继承来的方法以外,
  FileOutputStream 类还有两个常用的构造方法,这两个构造方法:
   FileOutputStream(String name);
   FileOutputStream(File file);
 2.2.BufferedInputStream 和BufferedOutputStream 类
  为了提高读写的效率, FileInputStream 流经常和BufferedInputStream 流配合使用,FileOutputStream 流经常和BufferedOutputStream 流配合使用。
  BufferedInputStream 的一个常用的构造方法是:
   BufferedInputStream(InputStream in);
   
  FileInputStream in=new FileInputStream(“A.txt”);
  BufferedInputStream buffer=new BufferedInputStream(in);
  
  FileOutputStream out=new FileOutputStream(“B.txt”);
  BufferedOutputStream buffer=new BufferedOutputStream(out
  需要注意的是,写入完毕后,须调用flush 方法将缓存中的数据存入文件。
3.使用字符流读写文件  
 字节流不能直接操作Unicode 字符,所以Java 提供了字符流,由于汉字在文件中占用2个字节,如果使用字节流,读取不当会出现乱码现象,采用字符流就
可以避免这个现象,在Unicode 字符中,一个汉字被看作一个字符。 
 所有字符输入流类都是Reader(输入流)抽象类的子类,而所有字符输出流都是Writer(输出流) 抽象类的子类。 
 Reader 类中常用方法:
  int read(): 输入流调用该方法从源中读取一个字符,该方法返回一个整数(0~65535 之间的一个整数,Unicode 字符值),如果未读出字符就返回-1。
  int read(char b[]): 输入流调用该方法从源中读取b.length 个字符到字符数组b 中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。
  int read(char b[], int off, int len): 输入流调用该方法从源中读取len 个字符并存放到字符数组b 中,返回实际读取的字符数目。
  如果到达文件的末尾,则返回-1。其中,off 参数指定read 方法从符数组b 中的什么地方存放数据。
  void close(): 输入流调用该方法关闭输入流。
  long skip(long numBytes): 输入流调用该方法跳过numBytes 个字符,并返回实际跳过的字符数目。
 Writer 类中 常用方法:
  void write(int n): 向输入流写入一个字符。
  void write(char b[]): 向输入流写入一个字符数组。
  void write(char b[],int off,int length): 从给定字符数组 中起始于偏移量off 处取len 个字符写到输出流。
  void close(): 关闭输出流。
 3.1 FileReader 和 FileWriter 类
  FileReader 该类是从Reader 中派生出来的简单输入类。该类的所有方法都是从Reader 类继承来的
  两个构造方法:
   FileReader(String name);
   FileReader (File file) ;
  与 FileReader 类相对应的类是FileWriter 类。FileWriter 提供了基本的文件写入能力。除了从FileWriter 类继承来的方法以外,FileWriter
  类还有两个常用的构造方法
   FileWriter(String name);
   FileWriter (File file);
 3.2 BufferedReader 和BufferedWriter 类
  为了提高读写的效率,FileReader 流经常和BufferedReader 流配合使用;FileWriter 流经常和BufferedWriter 流配合使用。
 BufferedReader 流还可以使用方法String readLine()读取一行;
 BufferedWriter 流还可以使用方法void write(String s,intoff,int length)将字符串s 的一部分写入文件,
 使用newLine()向文件写入一个行分隔符。
4 回压字符流
 称PushbackReader 类创建的对象为回压字符流。回压流可以使用unread(char ch)将一个字符回压到该流中,被回压的字符是该回压流
紧接着再调用read()方法时最先读出的字符。回压流可以用来监视读出的信息,当读出一个不需要的信息时,可以不处理该信息,而将需
要的信息回压,然后再读出回压的信息。
 PushbackReader(Reader in);
5 数据流
 DataInputStream 类和DataOutputStream 类创建的对象被称为数据输入流和数据输出流。这两个流是很有用的两个流,它们允许程
序按着机器无关的风格读取Java 原始数据。也就是说,当我们读取一个数值时,不必再关心这个数值应当是多少个字节。
 DataInputStream 类和DataOutputStream 的构造方法:
 DataInputStream(InputStream in):将创建的数据输入流指向一个由参数in 指定的输入流
 DataOutputStream(OutnputStream out):将创建的数据输出流指向一个由参数out 指定的输出流
6 对象流
 ObjectInputStream 类和ObjectOutputStream 类分别是DataInputStream 类和DataOutputStream 类的子类。ObjectInputStream
类和ObjectOutputStream 类创建的对象被称为对象输入流和对象输出流。对象输出流使用writeObject(Object obj)方法将一个对象obj 写入
到一个文件,对象输入流使用readObject()读取一个对象到程序中。
    ObjectInputStream 类和ObjectOutputStream 类的构造方法分别是:
  ObjectInputStream(InputStream in);
  ObjectOutputStream(OutputStream out);
7 RandomAccessFile 类
 RandomAccessFile 类创建的流与前面的输入、输出流不同,RandomAccessFile 类既不是输入流类InputStream 类的子类,也不
是输出流类OutputStram 类的子类流。
 RandomAccessFile 流的指向既可以作为源也可以作为目的地,换句话说,当我们想对一个文件进行读写操作时, 我们可以创建一个指向该文件的
RandomAccessFile 流即可,这样我们既可以从这个流中读取这个文件的数据,也通过这个流写入数据给这个文件。
 RandomAccessFile 类的两个构造方法:
  RandomAccessFile(String name,String mode):参数name 用来确定一个文件名,给出创建的流的源(也是流目的地),
   参数mode取“r”(只读)或“rw”(可读写),决定创建的流对文件的访问权利。
  RandomAccessFile(File file,String mode): 参数file 是一个File 对象,给出创建的流的源(也是流目的地),
   参数mode 取“r”(只读)或“rw”(可读写),决定创建的流对文件的访问权利。
8 文件上传
 客户通过一个JSP 页面,上传文件给服务器时,该JSP 页面必须含有File 类型的表单,并且表单必须将ENCTYPE 的属性值设成
“multipart/form-data”,
 <Form action= “ 接受上传文件的页面” method= “post” ENCTYPE=“ multipart/form-data”
  <Input Type= “File” name= “picture” >
 </Form>
 JSP 引擎可以让内置对象request 调用方法getInputStream()获得一个输入流,通过这个输入流读入客户上传的全部信息,包括文件的内容以及表单域的信息。
9 文件下载
 JSP 内置对象response 调用方法getOutputStream()可以获取一个指向客户的输出流,服务器将文件写入这个流,客户就可以下载这个文件了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值