zl程序教程

您现在的位置是:首页 >  后端

当前栏目

File类(在JSP中的使用)详解

JSP 详解 File 使用
2023-09-14 09:04:54 时间

File 对象用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读/写权限等,但 File 对象并不涉及对文件的读/写操作。

创建 File 对象的构造方法有三个:

  1. File(String filename)
  2. File(String directoryPath,String filename)
  3. File(File f,String filename)

其中,filename 是文件名字,directoryPath 是文件的路径,f 指定文件目录。

对于第一个构造方法,filename 是文件名字或文件的绝对路径,如 filename=”Hello.txt” 或 filename=”c:/mybook/A.txt”。

对于第二个构造方法,directoryPath 是文件的路径,filename 是文件名字,如 directoryPath=”c:/mybook/“,filename=”A.txt”。

对于第三个构造方法,参数 f 是指定一个目录,filename 是文件名字,如 f=new File(“c:/mybook”),filename=”A.txt”。

提示:

使用 File(String filename) 创建文件时,该文件被认为是与当前应用程序在同一目录中,由于 JSP 引擎是在 bin 下启动执行的,所以该文件也在 bin 目录下,即 D:\apache-tomcat-6.0.13\bin。

获取文件的属性

用户可以使用 File 类的下列方法获取文件本身的一些信息。

  • public String getName():获取文件的名字。
  • public boolean canRead():判断文件是否是可读的。
  • public boolean canWrite():判断文件是否可被写入。
  • public boolean exists():判断文件是否存在。
  • public long length():获取文件的长度(单位是字节)。
  • public String getAbsolutePath():获取文件的绝对路径。
  • public String getParent():获取文件的父目录。
  • public boolean isFile():判断文件是否是一个正常文件,而不是目录。
  • public boolean isDirectroy():判断文件是否是一个目录。
  • public boolean isHidden():判断文件是否是隐藏文件。
  • public long lastModified():获取文件最后修改的时间(时间是从 1970 年午夜(格林尼治时间)至文件最后修改时刻的毫秒数)。

【例1】使用上述的一些方法,获取某些文件的信息。

  1. <%@page language="java" contentType="text/html" pageEncoding="utf-8" %>
  2. <%@page import="java.io.*"%>
  3. <head>
  4. <title>
  5. 获取文件属性示例
  6. </title>
  7. </head>
  8. <%
  9. File f1=new File("E:\documents\java\apache-tomcat-6.0.16\webapps\ROOT","build.xml");
  10. File f2=new File("java.sh");
  11. %>
  12. 文件 build.xml 是可读的吗?
  13. <%=f1.canRead()%>
  14. <br/>
  15. 文件 build.xml 的长度:
  16. <%=f1.length()%>字节
  17. <br/>
  18. java.sh 是目录吗?
  19. <%=f2.isDirectory()%>
  20. <br/>
  21. build.xml 的父目录是:
  22. <%=f1.getParent()%>
  23. <br/>
  24. java.sh 的绝对路径是:
  25. <%=f2.getAbsolutePath()%>
  26. </font>
  27. </body>
  28. </html>

创建目录的基本操作

1. 创建目录

File 对象调用方法 public boolean mkdir() 创建一个目录,如果创建成功就返回 true,否则返回 false(如果该目录已经存在将返回 false)。

【例2】在 ch09 目录下创建一个名字为 Students 的目录:

  1. <%@page language="java" contentType="text/html" pageEncoding="utf-8" %>
  2. <%@page import="java.io.*"%>
  3. <head>
  4. <title>
  5. 创建目录
  6. </title>
  7. </head>
  8. <%
  9. File dir=new File("E:java\apache-tomcat-6.0.16\webapps\ch09","Students");
  10. %>
  11. 在 ch09 下创建一个新的目录:student,<br>成功创建了吗?
  12. <%=dir.mkdir()%>
  13. <br/>
  14. student 是目录吗?
  15. <%=dir.isDirectory()%>
  16. </font>
  17. </body>
  18. </html>

2. 列出目录中的文件

如果 File 对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录。

  • public String[] list():用字符串形式返回目录下的全部文件。
  • public File[] listFiles():用 File 对象形式返回目录下的全部文件。

【例3】输出 ch09 目录下的全部文件和子目录:

  1. <%@page contentType="text/html;charset=utf-8" %>
  2. <%@page import="java.io.*" %>
  3. <html>
  4. <body bgcolo=cyan>
  5. <font Size=2>
  6. <%
  7. File dir=new File("E:/apache-tomcat-6.0.13/webapps/ch09");
  8. File file[]=dir.listFiles();
  9. %>
  10. <br>目录有:
  11. <%
  12. for(int i=0;i<file.length;i++)
  13. {
  14. if(file[i].isDirectory())
  15. out.print("<br>"+file[il.toString()];
  16. }
  17. %>
  18. <br>文件名字:
  19. <%
  20. for( int i=0;i<file.length;i++)
  21. {
  22. if(file[i].isFile))
  23. out.print("<br>"+file[i].toString());
  24. }
  25. %>
  26. </font>
  27. </body>
  28. </html>

3. 列出指定类型的文件

有时需要列出目录下指定类型的文件,如 .jsp、.txt 等格式的文件,可以使用 File 类的以下两个方法。

  • public String[] list(FilenameFilter obj):该方法用字符串形式返回目录下的指定类型的所有文件。
  • public File[]listFiles(FilenameFilter obj):该方法用 File 对象返回目录下的指定类型 的所有文件。

【例4】列出 ch09 目录下部分 JSP 文件的名字:

  1. <%@page contentType="text/html;charset=utf-8" %>
  2. <%@page import="java.io.*"%>
  3. <html>
  4. <body bgcolor=cyan>
  5. <font Size=2>
  6. <%!
  7. class FileJSP implements FilenameFilter
  8. {
  9. String str=null;
  10. FileJSP(String s)
  11. {
  12. str="."+s;
  13. }
  14. public boolean accept(File dir,String name)
  15. {
  16. return name.endsWith(str) ;
  17. }
  18. }
  19. %>
  20. <br> ch09 目录中的 jsp 文件:
  21. <%
  22. File dir=new File("D:/apache-toracat-6.0.13/webapps/ch05");
  23. FileJSP file_jsp=new FileJSP("jsp");
  24. String file_name[]=dir.list(file_jsp);
  25. for(int i=0;i<file_name.length;i++)
  26. out.print("<br>"+file_name[i]);
  27. %>
  28. </font>
  29. </body>
  30. </html>

删除文件和目录

File 对象调用方法 public boolean delete() 可以删除当前对象代表的文件或目录。如果 File 对象表示的是一个目录,则该目录必须是一个空目录,删除成功将返回 true。

【例5】删除 ch09 目录下的 9-2.jsp 文件和 Students 目录:

  1. <%@page contentType="text/html;charset=utf-8" %>
  2. <%@page import="java.io.*" %>
  3. <html>
  4. <body>
  5. <%
  6. File f=new File("E:/apache-tomcat-6.0.13/webapps/ch09","9-2.jsp");
  7. File dir=new File( "E:/apache-tomcat-6.0.13/webapps/ch09","Students");
  8. boolean bl=f.delete();
  9. boolean b2=dir.delete();
  10. %>
  11. <P>文件<%=f.getName()%>成功删除了吗?<%=b1%>
  12. <P>目录<%=dir.getName() %>成功删除了吗?<%=b2%>
  13. </body>
  14. </html>