[英]BufferedWriter doesn't throw any error, but file is blank
我是使用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文件夹中)。
提前致谢。
UPDATE 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);;
}
好的,所以我觉得现在很愚蠢。 它一直在工作,但它是从服务器目录中的文件写入和读取,而不是我的源代码存储的位置。 因此,当我检查我手动创建的文本文件时,它没有显示任何更改,因为它不是正在使用的文件。 感谢大家的帮助和意见,抱歉浪费你的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.