2014-06-27 51 views
3

我是使用Java for web服務器的全新軟件,我正在編寫一個非常基本的應用程序,它將微文件寫入文件,稍後將調用該文件並顯示。 (我知道一個數據庫會更好,但這是一個任務,我們正在使用文件I/O來保持簡單。)BufferedWriter不會拋出任何錯誤,但文件是空的

這裏是我的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"); 
} 

當我運行應用程序,寄託都順利,我結束了重定向到listPost.jsp,但我的文件是空白的。我已經看過其他問題,但我正在做所有我知道的事情。我是否設置了BufferedWriter?我可以在錯誤的地方有posts.txt嗎? (它位於WebContent文件夾中)。

在此先感謝。

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

UPDATE 我現在知道,我可以從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);; 
} 
+0

查看我更新的帖子。 – MockerTim

+0

當您嘗試寫入或打開文件時,是否發生此任何異常。 –

+0

@FrankZHENG不,完全沒有錯誤。 –

回答

0

好了,我現在感覺非常愚蠢的。它一直在工作,但是它正在寫入和讀取服務器目錄中的文件,而不是存儲我的源代碼的位置。所以當我檢查我手動創建的文本文件時,它沒有顯示任何更改,因爲它不是正在使用的文件。感謝大家的幫助和投入,對於浪費你的時間感到抱歉。

相關問題