\n(新行)在创建文本文件时不起作用

\n (new line) not working in creating text file

我想通过单击按钮下载文本文件,一切正常,一切正常。但问题是我要插入文本文件的数据只有一行。

String fileContent = "简单解决方案\n下载示例1"; 在这里,\n 不起作用。它导致输出为:

Simple Solution Download Example 1

代码片段:

接口:

我的服务中的接口实现 class:

控制器:

不要使用硬编码 \n\r\n - 行分隔符是特定于平台的(Windows 不同于所有其他 OS)。

您可以做的是:

  1. 使用System.lineSeparator()
  2. 使用 String.format() 构建内容并将 \n 替换为 %n

主要问题是服务器计算机和客户端计算机在字符集编码和行分隔符方面基本上是独立的。 默认值不行。

  1. 因为我们生活在一个以 Windows 为中心的世界(我是 linuxer),用户 "\r\n".

  2. 然后java可以混合任何Unicode脚本。文件没有关于其编码的信息。 如果它源自另一个 computer/platform,则会引发问题。

     String fileContent = "Simple Solution façade, mañana, €\r\n"
         + "Download Обичам ĉĝĥĵŝŭ Example 1";
    

    所以原始计算机明确定义了编码。它不应该这样做:

     fileContent.getBytes(); // Default platform encoding Charset.defaultCharset().
    

    所以始发计算机可以做:

     fileContent.getBytes(StandardCharsets.UTF_8); // UTF-8, full Unicode.
     fileContent.getBytes("Windows-1252); // MS Windows Latin 1, some ? failures.
    

    contentType 可以通过 "text/plain;charset=UTF-8" 或 Windows-1252 "text/plain;charset=ISO-8859-1".

    适当设置

    从那个 byte[] 你应该为 contentLength.

    选择 .length
  3. 写入文件可以使用Files.writeString

    在这种情况下,使用 Files.size(exportedPath) 作为内容长度。

  4. Files.newInputStream(exportedPath) 是文件中的第三个好东西。