2010-10-25 105 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")); 

现在你可以重置/只通过设置该关键字移动通过系统属性中的工作目录和文件名。

希望它有点帮助;)