如何在JBoss应用程序中访问服务器上的本地文件?

时间:2010-07-14 18:42:36

标签: file-io jboss

我希望访问JBoss应用程序中本地目录中的所有文件。如果需要,我可以将目录放在我的战争中的任何地方,包括WEB-INF。然后我想按顺序访问目录中的每个文件。在正常的应用程序中,如果目录位于运行位置,我可以执行以下操作:

File f = new File("myDir");
if(f.isDirectory && f.list().length != 0)
{
    for(String fileName : f.list())
    {
        //do Read-Only stuff with fileName
    }
}

我正在寻找最佳实践解决方案,所以如果我发现这个错误,那么请指出我正确的方式来访问一组未知的资源。

1 个答案:

答案 0 :(得分:2)

首先要注意的是:如果你有一个爆炸的WAR,或者可能是servlet容器为你爆炸了WAR,你只会让它工作。

考虑到这一点,您可以使用ServletContext.getRealPath()作为起点。您需要知道webapp根目录中至少一个文件的名称,然后从那里开始:

String knownFilePath = servletContext.getRealPath("knownFile");
File webAppRootDir = new File(knownFilePath).getParentFile();

// and then as per the question
File f = webAppRootDir ;
if(f.isDirectory && f.list().length != 0)
{
    for(String fileName : f.list())
    {
        //do Read-Only stuff with fileName
    }
}

抓住ServletContext留给读者作为练习。