新行命令(\ n)在使用TomCat的手绘文件时无效

时间:2012-12-20 05:08:11

标签: java file javamail readfile

我正在尝试通过阅读文本文件中的内容来发送邮件。

文件我正在尝试阅读

Line 1
Line 2
Line 3

我已经使用JUnit测试了代码,我得到的邮件格式与文本文件相同。

使用Junit输出邮件

Line 1
Line 2
Line 3

但是当部署在Tomcat中时,我会收到包含该文本的邮件,但新行未被识别。

使用tomcat服务器时输出邮件

Line 1Line 2Line 3

我用来读取文件内容的代码。

private String readFile(String pathname) throws IOException {
        File file = new File(pathname);
        StringBuilder fileContents = new StringBuilder((int) file.length());
        Scanner scanner = new Scanner(file);
        String lineSeparator = System.getProperty("line.separator");

        try {
            while (scanner.hasNextLine()) {
                fileContents.append(scanner.nextLine() + lineSeparator);
            }
            return fileContents.toString();
        } finally {
            scanner.close();
        }
    }

我已将服务器置于调试模式,我可以看到新行被追加到fileContents.toString()

我不确定我错过了什么。什么与字符集有关?我不确定......

2 个答案:

答案 0 :(得分:1)

它与Perception和nullix的线索有关。如何阅读邮件和HTML。

在我的情况下,我通过从邮件客户端发送邮件进行测试,邮件客户端向我的应用程序发送“text / html”类型的邮件。因此,当我回复该邮件时,回复邮件也是“text / html”格式。因此, / n 或我使用过的任何换行类型都被省略了。

因此,在阅读邮件时,我只阅读“text / plain” mime类型。因此,在回复此邮件时,我可以打印新行。

答案 1 :(得分:0)

也许您正在阅读邮件输出的方式让您认为新行不存在。例如,如果您将'\ n'作为换行符编写,并在Windows记事本上打开该文件,则看起来好像换行符不在那里。

使用更复杂的文本查看器,如Notepad ++,您可以在其中查看空白字符可能有帮助