0

我正在附加和流式传输一堆文件,我想在第一个文件之后修剪标题行。在 Windows 上,以下 java 代码添加了一个空行,我在 notepad++ 中看到了乱码。任何修复/建议?谢谢你。

    private int updateHeader(byte[] buffer) throws UnsupportedEncodingException {
      if (first) {
        return buffer.length;
      }
      String s, s2;
      s = new String(buffer, "UTF-8");
      int k = s.indexOf(System.getProperty("line.separator"), 0);
      s2 = s.substring(k + 1);
      byte[] buffer2 = s2.getBytes("UTF-8");
      System.arraycopy(buffer2, 0, buffer, 0, buffer2.length);
      return buffer2.length;
   }
4

1 回答 1

1

我的猜测是您应该执行以下操作:

...
String separator = System.getProperty("line.separator");
int k = s.indexOf(separator, 0);
s2 = s.substring(k + separator.length());
s2 = s2.trim();
...

Windows 行分隔符的长度超过 1 个字符(CR + LF)与 Unix 相比,Unix 是基于this的 LF 。此外,如果您跨平台移动文件,这可能会很棘手。

编辑我不确定你看到了什么,因为我没有这些文件,但如果你看到时髦的字符,你也可以尝试修剪子字符串。您确定文件的编码正确并且您正在正确阅读它们吗?

于 2013-05-21T14:34:34.920 回答