2010-10-25 156 views
1

我使用Eclipse創建動態Web項目。我的日食是Eclipse中的文件路徑(Java)

/home/pc/eclipse 

和我的項目是在/home/pc/workspace/MyWebProj

現在我處於上述項目目錄中的文件。當我想從我的代碼中讀取任何文件時,它總是搜索/ home/pc/eclipse文件夾中的文件而不是/home/pc/workspace/MyWebProj,因此我暫時對文件路徑進行了硬編碼。

在Eclipse中我缺少配置設置嗎?

請推薦。

謝謝你, 塔拉·辛格

+0

你能否提供一點解釋?當你說「當我想從我的代碼中讀取任何文件時......」你究竟想要做什麼? – karlgrz 2010-10-25 03:54:30

+0

這意味着我想要讀取文件的內容。它總是說文件未找到,當我試圖打印目錄時,我得到的是eclipse Directory而不是Project Directory。 – 2010-10-25 03:57:21

回答

1

我認爲你需要做的是閱讀從Web應用程序的javax.servlet.ServletContext的位置的文件內容。如果使用getContextPath(),則應該獲取Web應用程序的工作目錄而不是Java VM。

您也可以嘗試使用同一類中的getResourcegetResourceAsStream方法加載任何文件。

我寫這篇文章的時候有點慌,所以我會提供一些信息。

最好的方法是使用getResourceAsStream方法。這使您可以訪問您的Web應用程序中的文件。

要從Web應用程序的根目錄獲取文件foo.txt並將其打印到響應中,可執行以下操作。

public class TestServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws javax.servlet.ServletException, java.io.IOException 
    { 
     PrintWriter writer = response.getWriter(); 

     // foo.txt is at the root directory of the web app 
     InputStream in = getServletContext().getResourceAsStream("/foo.txt"); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 

     String text; 
     while ((text = reader.readLine()) != null) { 
      writer.println(text); 
     } 
    }  
} 
+0

謝謝,getContextPath幫我解決了這個問題。我嘗試了這種方法,現在我可以讀取寫入文件。再次感謝。 – 2010-10-29 15:50:25

0

我不知道這些文件,或者更具體地說,最合適的存儲位置是什麼,但傳統的IO在這種情況下,最好的方法是通過ClassLoading。您可以創建一個位於src/main/resources的源文件夾,該文件夾將包含在歸檔(jar,war,ear等)程序集中(即這些文件將包含在jar中)。你會然後load these resources

如果一個文件直接位於包中,它也將包含在工件集中,並且可以被包的類加載器中的任何類訪問,或者通過具有包路徑的默認類加載器訪問(包對應當建立一個存檔文件到文件夾)。

如果您使用的是Maven Assembly插件,這些資源文件將自動包含在內。如果您使用的是類似Ant的內容,則可能需要在腳本步驟中包含這些文件。否則,我認爲如果你只是在Eclipse中構建,那麼就有一個包含文件的嚮導。

而且,可能的原因企圖從/ home/PC/eclipse文件夾讀取文件是因爲system propertyuser.diruser.home正在utitlized:

String filename = System.getProperty("user.dir") + System.getProperty("file.separator") + "file.txt"; 
0

不知道這是否就是你正在尋找,但您可以在Eclipse中輕鬆設置/更改每個「運行配置」的「工作目錄」。

  1. 轉到「運行配置」對話框
  2. 選擇你的項目(或特定運行配置)
  3. 選擇「參數」選項卡
  4. 在窗口的下半部分,你現在可以更改正在運行的配置的「工作目錄」。
  5. 將其更改爲/家庭/ PC /工作區/ MyWebProj和你的應用程序應該工作。

雖然這可能工作,我建議你應該通過SystemProperty變量。只要讓你的文件的父路徑是這樣的:

File myFile = new File(System.getProperty("com.myapp.myfile.property")); 

現在你可以重置/只通過設置該關鍵字移動通過系統屬性中的工作目錄和文件名。

希望它有點幫助;)