Eclipse中的文件路径(Java)

时间:2010-10-25 03:42:15

标签: java eclipse

我正在使用Eclipse来创建动态Web项目。我的日食在

/home/pc/eclipse

我的项目位于/home/pc/workspace/MyWebProj

现在我将文件放在上面的项目目录中。当我想从我的代码中读取任何文件时,它总是搜索/ home / pc / eclipse文件夹中的文件而不是/home/pc/workspace/MyWebProj,因此我暂时硬编码文件路径。

我缺少Eclipse中的任何配置设置吗?

请建议。

谢谢你, 塔拉辛格

3 个答案:

答案 0 :(得分:1)

我认为您需要做的是从Web应用程序的javax.servlet.ServletContext位置读取文件。如果使用getContextPath(),则应该获取Web应用程序的工作目录而不是Java VM。

您也可以尝试使用同一类中的getResourcegetResourceAsStream方法加载任何文件。

当我写这篇文章时,我有点匆忙,所以我会提供更多信息。

最好的方法是使用getResourceAsStream方法。这允许您访问webapp中的文件。

要从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);
        }
    }    
}

答案 1 :(得分:0)

我不确定这些文件是什么,或者更具体地说,最合适的存储位置是什么,但传统上在这种情况下IO的最佳方法是通过ClassLoading。您可以创建一个位于src/main/resources的源文件夹,该文件夹将包含在存档(jar,war,ear等)程序集中(即这些文件将包含在jar中)。然后你会load these resources

如果文件直接位于包中,它也将包含在工件程序集中,并且可以由包的类加载器中的任何类访问,或者通过包路径的默认类加载器访问(包对应于构建存档时的文件夹。)

如果您使用的是maven程序集插件,则会自动包含这些资源文件。如果您使用的是Ant,则可能需要在脚本步骤中包含这些文件。否则我想如果你只是在Eclipse中构建,那么就有一个包含文件的向导。

此外,尝试从/ home / pc / eclipse文件夹中读取文件的可能原因是因为user.diruser.home正在被{ut}化为String filename = System.getProperty("user.dir") + System.getProperty("file.separator") + "file.txt";

{{1}}

答案 2 :(得分:0)

不知道它是否正在寻找,但您可以在Eclipse中轻松设置/更改每个“运行配置”的“工作目录”。

  1. 转到“运行配置”对话框
  2. 选择您的项目(或特定的运行配置)
  3. 选择“参数”标签
  4. 在窗口的下半部分,您现在可以更改正在运行的配置的“工作目录”。
  5. 将其更改为 / home / pc / workspace / MyWebProj ,您的应用应该可以使用。
  6. 虽然这可能有用,但我建议你应该通过一个SystemProperty变量。只需获取文件的父路径:

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

    现在,只需设置此关键字,即可通过系统属性重置/移动工作目录和文件名。

    希望它有所帮助;)