我有一个jsp文件,下面是它用来读取txt文件的一段代码:
<%
String fileName = request.getParameter("file") + ".txt";
String code = TextReader.read("fileName");
%>其中TextReader类已经导入,里面的read方法实现如下:
public static String read(String fileName) throws IOException{ StringBuffer sb = new StringBuffer(); //打开文件
BufferedReader in = new BufferedReader(new FileReader(fileName)); //用于临时存贮读到的每一行
String s; //读取文件,并记录在sb里面
while((s = in.readLine()) != null){
sb.append(s);
sb.append("\n");
} in.close();
return sb.toString();
}TextReader类编译通过了的。而且测试过,读取文件成功。但是用到jsp中就不行了,可以生成servlet,但是不能显示页面。
只要有这行就显示不了:String code = TextReader.read("fileName");
而且连接的时候会等待很久,之后就显示显示不了此页面的信息。我找过解决的方法,但是大家都有Bean读取文件和操作文件的。我想问,为什么不能直接操作文件??我的代码出现了什么问题??
网上有听说,我这样读取的文件不是相对服务器的,而是相对客户端的?可以帮忙解析一下原理吗?
谢谢!

解决方案 »

  1.   

    <%
    String fileName = request.getParameter("file") + ".txt";
    String code = TextReader.read("fileName");
    %>----->
    <%
    String fileName = request.getParameter("file") + ".txt";
    String code = TextReader.read(fileName);
    %>我找过解决的方法,但是大家都有Bean读取文件和操作文件的。我想问,为什么不能直接操作文件??我的代码出现了什么问题??
    1.都用Bean去读写东西是个好习惯,准确的说Jsp只是显示用和根据用户的动作去做不同的事情
    2.读写东西也不是控制层应该做的,应该是控制层调用逻辑层去做的事情网上有听说,我这样读取的文件不是相对服务器的,而是相对客户端的?可以帮忙解析一下原理吗?
    你写的jsp的话,肯定是相对于服务器的,除非你的这段代码放在Applet或者Java Web Start里面,这个才是相对客户端的
      

  2.   

    嗯,我明白使用servlet去处理业务逻辑是个好的习惯。
    想请问,为什么我这样读取不了文件的内容?刚才尝试了很多方法,还是不行。
    什么地方出现问题了?
      

  3.   

    谢谢指出那个双引号的错误!
    刚才我改了一下代码:<%
    String fileName = "/text/html.txt"; //在我的Web应用中的根目录有这个路径的!
    String code = TextReader.read(fileName);
    %>但是还是链接到页面的时候,出现长时间的等待之后就提示显示不了页面。
    这样读取文件,出现什么问题了??
      

  4.   

    相对目录的话使用
    <%
    String fileName = "text/html.txt"; //在我的Web应用中的根目录有这个路径的!
    String code = TextReader.read(fileName);
    %>
      

  5.   

    楼上的你测试过这样可以读取文件么?
    我在我的根目录下放了个basic.txt文件,然后用我的一个FileRW类的read方法读取,并返回内容,但是没有成功。还是要绝对路径才可以读取。