Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用TomCat处理文件时,新行命令(\n)不起作用_Java_File_Jakarta Mail_Readfile - Fatal编程技术网

Java 在使用TomCat处理文件时,新行命令(\n)不起作用

Java 在使用TomCat处理文件时,新行命令(\n)不起作用,java,file,jakarta-mail,readfile,Java,File,Jakarta Mail,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) thro

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

我正在读的文件

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()


我不确定我错过了什么。与字符集有关的东西吗?我不确定……

也许你阅读邮件输出的方式让你觉得新行不在那里。例如,如果将“\n”写为换行符,并在windows记事本上打开该文件,则该文件将显示为不存在换行符


使用更复杂的文本查看器(如记事本+)可以看到空白字符,这可能会有所帮助

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

在我的例子中,我通过从一个邮件客户端发送邮件进行测试,该客户端向我的应用程序发送“text/html”类型的消息。因此,当我回复该邮件时,回复邮件也采用“text/html”格式。因此,省略了/n或我使用的任何换行类型


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

因为我假设lineSeparator的值可能不会像您在tomcat中期望的那样。您是如何阅读这封邮件的?可能是您的邮件客户端正在删除新行。循环中是否有html?html不关心crlf,只需要
在什么系统上运行tomcat?您的代码将系统无关分隔符替换为系统相关分隔符,这是服务器的一部分。如果服务是linux(lf),客户端是windows(crlf)。。。bingo@om39a-嗯,你正在某处读电子邮件,对吗?为了验证它是由您的程序发送的?