jsp文件操作之读取篇

  文件操作是网站编程的重要内容之一,asp关于文件操作讨论的已经很多了,让我们来看看jsp中是如何实现的。

  这里用到了两个文件,一个jsp文件一个javabean文件,通过jsp中调用javabean可以轻松读取文本文件,注意请放置一个文本文件afile.txt到web根目录的test目录下,javabean文件编译后将class文件放到对应的class目录下(tomcat环境)。

  Read.jsp

  <html>

  <head>

  <title>读取一个文件</title>

  </head>

  <body bgcolor="#000000">

  <%--调用javabean --%>

  <jsp:useBean id="reader" class="DelimitedDataFile" scope="request">

  <jsp:setProperty name="reader" property="path" value="/test/afile.txt" />

  </jsp:useBean>

  <h3>文件内容:</h3>

  <p>

  <% int count = 0; %>

  <% while (reader.nextRecord() != -1) { %>

  <% count++; %>

  <b>第<% out.print(count); %>行:</b>

  <% out.print(reader.returnRecord()); %><br>    

  <% } %>

  </p>

  </body>

  </html>

  //DelimitedDataFile.java bean文件源代码

  //导入java包

  import java.io.*;

  import java.util.StringTokenizer;

  public class DelimitedDataFile

  {

  private String currentRecord = null;

  private BufferedReader file;

  private String path;

  private StringTokenizer token;

  //创建文件对象

  public DelimitedDataFile()

  {

     file = new BufferedReader(new InputStreamReader(System.in),1);

  }

  public DelimitedDataFile(String filePath) throws FileNotFoundException

  {

    

     path = filePath;

     file = new BufferedReader(new FileReader(path));

  }

     //设置文件路径

     public void setPath(String filePath)

        {

            

            path = filePath;

  try {

  file = new BufferedReader(new

  FileReader(path));

  } catch (FileNotFoundException e) {

            System.out.println("file not found");

            }

    

        }

  //得到文件路径

     public String getPath() {

        return path;

  }

  //关闭文件

  public void fileClose() throws IOException

  {

    

     file.close();

  }

  //读取下一行记录,若没有则返回-1

  public int nextRecord()

  {

    

    

     int returnInt = -1;

     try

     {

     currentRecord = file.readLine();

     }

    

     catch (IOException e)

     {

     System.out.println("readLine problem, terminating.");

     }

    

     if (currentRecord == null)

     returnInt = -1;

     else

     {

     token = new StringTokenizer(currentRecord);

     returnInt = token.countTokens();

     }

     return returnInt;

  }

    //以字符串的形式返回整个记录

  public String returnRecord()

  {

  return currentRecord;

  }

  }