servlet 读取相对路径 读取本地文件

比如要读取“index”文件夹下的文件,那么这个文件夹需要放在webroot目录下,如图所示:


这个目录是Myeclipse的工作目录。只有将此文件夹放在这里,该文件才能被读到tomcat中,才能使用servlet读到(至少我现在只会这一种方法)。

执行后发现tomcat下已经有该文件夹了


在JSP页面里我只写了hidden控件并赋值:

<form action="wordcount" method=post name=form>
<input type="hidden" name=hidden value="\EnNovezl.txt">
<!-- 临时存放路径 -->
<input type="submit" name=submit value="确定">
</form>

在servlet类中读取到该值:

String dir = request.getParameter("hidden");// 得到路径

再得到绝对路径

String path = this.getServletContext().getRealPath("/");
String pathindex = "index";
String text="";
dir=path+pathindex+dir;

这个“dir”就可以定位到EnNovezl.txt文件了。

下面是在servlet类里把文件读出来

File file = new File(dir);// 相对路径
if (file.exists()) {
System.out.println("存在");
FileInputStream fi = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fi, "UTF-8");
BufferedReader bfin = new BufferedReader(isr);
String rLine = "";
while ((rLine = bfin.readLine()) != null) {// 每次读一行
text = text + " " + rLine;
}
} else {
System.out.println("不存在");
}
/*** 读文本结束 ***/

这就可以了

参考:http://zhidao.baidu.com/question/80225597.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于servlet读取文件,您可以通过以下步骤来实现: 1. 在您的servlet类中,首先导入相关的包: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; ``` 2. 在您的servlet类中,重写doGet或doPost方法,根据您的业务需要选择合适的方法。以下是使用doGet方法的示例: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取要读取文件路径 String filePath = "/path/to/your/file.txt"; // 创建File对象 File file = new File(filePath); // 创建字节输入流 FileInputStream fis = new FileInputStream(file); // 设置响应头,告诉浏览器该文件是可下载的 response.setHeader("Content-Disposition", "attachment; filename=" + file.getName()); // 获取ServletResponse的输出流 ServletOutputStream outputStream = response.getOutputStream(); // 缓冲区大小(可根据实际情况调整) int bufferSize = 4096; byte[] buffer = new byte[bufferSize]; int bytesRead; // 从输入流中读取数据,并写入输出流中 while ((bytesRead = fis.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } // 关闭输入流和输出流 fis.close(); outputStream.close(); } ``` 3. 在您的web.xml文件中配置servlet映射。例如: ```xml <servlet> <servlet-name>FileServlet</servlet-name> <servlet-class>com.example.FileServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileServlet</servlet-name> <url-pattern>/download</url-pattern> </servlet-mapping> ``` 在上面的示例中,您可以通过访问`http://yourdomain.com/download`来下载文件。 请注意,上述示例仅仅是一个基本的读取文件并提供下载的示例,您可以根据实际需求进行修改和扩展。另外,为了确保权限和安全性,您可能需要添加适当的验证和授权机制。 希望这能帮到您!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值