Tomcat无法读取本地读取的文件

时间:2016-07-08 21:35:16

标签: java tomcat tomcat8

我在我的CacheInitializer中有这个代码,它实现了ServletContextListener

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        File file = new File(classLoader.getResource("synonyms.txt").getFile());
        if (file != null && file.exists()) {
            try (Scanner scanner = new Scanner(file)) {
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine();
                    String leftHand = line.split("=>")[0];
                    String rightHand = line.split("=>")[1];

                    for (String s : leftHand.split(",")) {
                        if (s.equals(""))
                            continue;
                        synonymsLookupMap.put(s.trim(), rightHand.trim());
                    }
                }
                scanner.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            throw new RuntimeException("Synonyms file not found");
        }

sysnonyms.txt文件位于资源文件夹中。当我尝试在本地运行此代码(Mac OSX)时,它运行得非常好。但是当我在我的Amazon Linux EC2机器上部署相同的战争时,没有内容被读取。我尝试了远程调试,代码永远不会进入while循环。也没有抛出异常。它找到该文件但行为就像它是空的,并且没有要读取的行。我尝试在服务器上通过vi创建synonyms.txt,然后使用它来查看它是否是文件格式问题。它也没用。

知道什么是问题吗?

1 个答案:

答案 0 :(得分:1)

资源不是文件。资源API可以为您提供URL或资源的InputStream。这就是你所需要的。只需直接从输入流构建扫描仪。通过File转移是多余的,毫无意义,无法正常工作。