JSP中的文件操作(文件流)

File类的对象主要用来获取文件本身的一些信息.例如文件所在的目录,文件的长度和文件读写权限等,不涉及对文件的读写操作.
构造方法:File(String filename);
File(String directoryPath,String filename);
File(File f,String filename);


指定类型的文件:
public String[] list(FilenameFilter obj):以字符串形式返回目录下目录下指定类型的所有文件.
public File[] listFiles(FilenameFilter obj):用File对象返回目录下指定类型的所有文件.
FilenameFilter是一个接口,该接口有一个方法:
public boolean accept(File dir,String name);
示例为jsp页面上的代码:
<%!
         class FileJSP implements FilenameFilter
         {
         String str = null;
         FileJSP(String s)
         {
         str = "."+s;
         }
         public boolean accept(File dir,String name)
         {
         return name.endsWith(str);
         }
         }
          %>
          <br>目录中的jsp文件:
          <%
           FileJSP file_jsp = new FileJSP("jsp");
           String file_name[] = dir1.list(file_jsp);
           for(int i = 0;i<file_name.length;i++)
           {
           out.print("<br>"+file_name[i]);
           }
           %>


使用字节流读写文件:
所有字节输入流类都是InputStream抽象类的子类,而所有的字节输出流类都是OutputStream抽象类的子类.
FileInputStream ,FileOutputStream类分别从InputStream,OutputStream类继承而来.


为了提高读写效率,FileInputStream 经常和BufferedInputStream 流配合使用.
FileOuputStream流经常和BufferedOutputStream流配合使用.
对应的构造方法分别为:BufferedInputStream(InputStream in);
    BufferedOutputStream(OutputStream out);
示例代码为:(JSP页面内编写)
<%
           File f6 = new File("F:/SF/Test1.java");
           try
           {
           /* FileOutputStream outfile = new FileOutputStream(f6);
           BufferedOutputStream bufferout = new BufferedOutputStream(outfile);
           byte[] b = "你们好,很高兴认识你们呀!<br>nice to meet you ".getBytes();
           bufferout.write(b);
           bufferout.flush();
           bufferout.close();
           outfile.close(); */
           FileInputStream in = new FileInputStream(f6);
           BufferedInputStream bufferin = new BufferedInputStream(in);
           byte c[] = new byte[90];
           int n = 0;
           while((n=bufferin.read(c))!=-1)
           {
           String temp = new String(c,0,n);
           out.print(temp);
           }
           bufferin.close();
           in.close();
          
           }
           catch(IOException e){}
            %>


使用字符流读写文件:
  使用字节流读写文时,因为字节流不能直接操作Unicode字符,所以java提供了字符流.由于汉字在文件中占用2个字节,如果使用字节流,读取不当会出现乱码现象,采用字符流就可以避免这个现象.在Unicode字符中,一个汉字被看作一个字符.
所有字符输入流类都是Reader抽象类的子类,而所有字符输出流类都是Writer抽象类的子类.
FileReader类与FileWriter类,BufferedReader 类与BufferedWriter类
代码示例:
  <%!
     public void writeContent(String str,File f)
     {
     try{
     FileWriter outfile = new FileWriter(f);
     BufferedWriter bufferout = new BufferedWriter(outfile);
     bufferout.write(str);
     bufferout.close();
     outfile.close();
     }catch(IOException e){}
     }
    
     public String readContent(File f)
     {
     StringBuffer str = new StringBuffer();
     try{
     FileReader in = new FileReader(f);
     BufferedReader bufferin = new BufferedReader(in);
     String temp;
     while((temp=bufferin.readLine())!=null)
     {
     str.append(temp+"<br>");
     }
     bufferin.close();
     in.close();
     }catch(IOException e ){}
     return new String(str);
     }
     %>


数据流:
DataInputStream类与DataOutputStream类创建的对象分别被数据输入流和数据输出流.它们允许程序按照与机器无关的风格读取java原始数据.也就是说,当读取一个数值时,不必再关心这个数值应当是多少个字节.
构造方法为:DataInputStream(InputStream in);
   DataOutputStream(OutputStream out);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值