BufferedWriter不会抛出任何错误,但文件为空

时间:2014-06-27 04:15:42

标签: java file-io

我是使用Java进行Web服务器的新手,我正在编写一个非常基本的应用程序,它将微文章写入文件,稍后将调用并显示该文件。 (我知道数据库对此更好,但这是一个赋值,我们使用文件I / O来保持简单。)

这是我的servlet中接收表单的方法并将数据写入我的文件:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String content = request.getParameter("postContent");

    Calendar cal = new GregorianCalendar(); 
    int day = cal.get(Calendar.DAY_OF_MONTH);
    int month = cal.get(Calendar.MONTH) + 1; //add one because the Calendar class numbers months 0-11
    int year = cal.get(Calendar.YEAR);

    int hour = cal.get(Calendar.HOUR);
    int minutes = cal.get(Calendar.MINUTE);

    String dateTime = Integer.toString(month) + "/" + Integer.toString(day) + "/" + Integer.toString(year) + " " + Integer.toString(hour) + ":" + Integer.toString(minutes); 

    String user = request.getSession().getAttribute("username").toString();

    ServletContext servletContext = request.getSession().getServletContext();    
    String path = servletContext.getRealPath("/posts.txt");
    //String path = getServletContext().getRealPath("/posts.txt");

    try {
        BufferedWriter writer = new BufferedWriter(new FileWriter(path, true));
        writer.write(user);
        writer.newLine();
        writer.write(dateTime);
        writer.newLine();
        writer.write(content);
        writer.close();
    }catch(IOException ex){
        System.out.println(ex.getMessage());
    }

    response.sendRedirect("listPosts.jsp");
}

当我运行应用程序时,everthing顺利进行并最终重定向到listPost.jsp,但我的文件是空白的。我已经看过其他问题,但我做的一切都是我知道的。我是否设置了BufferedWriter错误?我可以将posts.txt放在错误的地方吗? (它位于WebContent文件夹中)。

提前致谢。

更新 path变量的值如下:     /home/[myusername]/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/forum/posts.txt

更新 我现在知道我可以从posts.txt读取,所以这告诉我应用程序找不到它。

我使用以下代码从文件中读取:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String path = getServletContext().getRealPath("posts.txt");
    BufferedReader reader = new BufferedReader(new FileReader(path));
    String username = reader.readLine();
    String dateTime = reader.readLine();
    String postContent = reader.readLine();
    reader.close();

    request.setAttribute("username", username);
    request.setAttribute("dateTime", dateTime);
    request.setAttribute("postContent", postContent);

    request.getRequestDispatcher("/listPosts.jsp").forward(request, response);;
}

1 个答案:

答案 0 :(得分:0)

好的,所以我觉得现在很愚蠢。它一直在工作,但它是从服务器目录中的文件写入和读取,而不是我的源代码存储的位置。因此,当我检查我手动创建的文本文件时,它没有显示任何更改,因为它不是正在使用的文件。感谢大家的帮助和意见,抱歉浪费你的时间。