1

我正在尝试读取网络上的文件夹并检索 txt 文件列表。在 Eclipse 中本地测试它时,它工作正常,但是每当我将它部署在 Apache Tomcat 7 服务器上时,它都会返回 null。

这似乎不是访问权限问题,因为服务器可以访问我尝试浏览的文件夹。我不确定那里出了什么问题,是我需要更改的服务器上的设置还是其他什么?

private List<File> readDirectory() {
    File test = new File(envMap.get(database));
    List<File> files = new ArrayList<File>();
    try {
        files = FileListing.getFileListing(test);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    List<File> txtFiles = new ArrayList<File>();
    if (files != null) {
        for (File file : files) {
            if (file.isFile() && file.getName().endsWith(".txt")) {
                txtFiles.add(file);
            }
        }
    }
    return txtFiles;
}

我用这个http://www.javapractices.com/topic/TopicAction.do?Id=68FileListing.getFileListing

仔细检查后发现我得到了一个FileNotFoundException: Directory does not exist. 该目录确实存在并且服务器对其具有访问权限,所以我不确定该怎么做。

4

2 回答 2

0

files不能null。您的代码使用

static private List<File> getFileListingNoSort(File aStartingDir) throws FileNotFoundException {
    List<File> result = new ArrayList<File>();
    File[] filesAndDirs = aStartingDir.listFiles(); // may return null
    List<File> filesDirs = Arrays.asList(filesAndDirs); // would throw NPE
    for(File file : filesDirs) {
        result.add(file); 
        if (!file.isFile()) {
            //must be a directory               
            List<File> deeperList = getFileListingNoSort(file);
            result.addAll(deeperList);
        }
    }
    return result;
}

您确定向我们展示了正确的代码吗?

于 2013-09-04T12:40:59.510 回答
0

找出问题所在,事实证明,默认情况下 Apache 在没有网络访问权限的本地系统帐户下运行。将其更改为具有网络访问权限的另一个帐户解决了该问题。

来源:http ://blog.mattwoodward.com/2010/08/accessing-network-drive-from-apache-and.html

于 2013-09-05T12:33:48.467 回答