Java 如何在Servlet中读取文本文件和输出?

Java 如何在Servlet中读取文本文件和输出?,java,servlets,Java,Servlets,我有一个文件:input.txt 我想读取此文件,将值从input.txt放入new output.txt Servlet.java protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); r

我有一个文件:input.txt 我想读取此文件,将值从input.txt放入new output.txt

Servlet.java

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/plain");
    response.setHeader("Content-Disposition",
                 "attachment;filename=output.txt");
    PrintWriter out = response.getWriter();
    ServletContext cntxt = this.getServletContext();
    String fName = "/input.txt";
    InputStream ins = cntxt.getResourceAsStream(fName);
    try {
        if(ins != null){
        InputStreamReader isr = new InputStreamReader(ins);
        BufferedReader reader = new BufferedReader(isr);
        int n = 0;
        String word ="";
        while((word= reader.readLine())!= null)
         {
             n = Integer.parseInt(word);
             out.println(n);
         }
      } finally {
            out.close();
      }
}
但是output.txt是空的。怎么了?

试试下面的代码

input.txt
应该出现在应用程序的根目录中

protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/plain");
        response.setHeader("Content-Disposition", "attachment;filename=output.txt");
        PrintWriter out = response.getWriter();
        ServletContext cntxt = this.getServletContext();
        String fName = "/input.txt";
        InputStream ins = cntxt.getResourceAsStream(fName);
        try {
            if (ins != null) {
                InputStreamReader isr = new InputStreamReader(ins);
                BufferedReader reader = new BufferedReader(isr);
                int n = 0;
                String word = "";
                while ((word = reader.readLine()) != null) {
                    n = Integer.parseInt(word);
                    out.println(n);
                }
            }
        }finally {
            out.close();
        }
    }

ApacheFileUtils可以使它变得简单

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    PrintWriter out = response.getWriter();

    List<String> lines = FileUtils.readLines(new File("file.txt), "UTF-8");

    for (String line : lines) {
        out.println(line);
    }
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
PrintWriter out=response.getWriter();
列表行=FileUtils.readLines(新文件(“File.txt”),“UTF-8”);
用于(字符串行:行){
out.println(行);
}
}

ins
可能为空。您应该使用调试器或向代码添加跟踪来调查问题所在以及实际执行的行。您部署的Web应用程序的根目录下是否有input.txt文件?动态提供静态文件有何意义?为什么不将output.txt放在webappa direct中ly?代码与OP的代码完全相同。你的答案有什么意义?如果
try
中的
缺少右括号,请关闭