我使用Apache Commons API使用FTPClient类将新行附加到文件中。当我在Java中运行以下代码时,会在FTP服务器上的文件中附加一个新行。但是,当我在Android中运行相同的代码时,字符串将附加到文件而不会有新行。
为什么新行使用--System.getProperty(" line.separator") - 在Android下不通过FTP传输?
此外,新行正确显示在LogCat中,但在FTP服务器上的txt文件中不起作用。也许Java和Android之间的字符编码存在差异?
非常感谢。
String log = System.getProperty("line.separator") + "blablabla";
boolean done = ftpClient.appendFile("log.txt", new ByteArrayInputStream(log.getBytes("UTF-8")));
System.out.println("LOG: " + log);
答案 0 :(得分:0)
Windows 使用\r\n
作为行分隔符,而 UNIX 仅使用\n
所以,尝试使用
String log = "\n" + "blablabla";
或
String log = "\r\n" + "blablabla";
而不是
String log = System.getProperty("line.separator") + "blablabla";
答案 1 :(得分:0)
由于文件在服务器上,我认为您不希望客户端的值System.getProperty("line.separator");
您想知道该行是什么服务器上的分隔符,特别是当您在二进制模式下工作时(显然),因此FTP中间层不能为您进行行结束转换。 (曾经 - 可能仍然是 - 对于FTP客户端和服务器来说这很常见;它被称为“ASCII”模式。<啊>啊,那些宁静的日子,当我们认为我们可以假设文本将是ASCII时尽管知道,内心深处,那是不可持续的......就像两位数的年份......] )
您可以从服务器查询该信息,也可以选择始终在服务器端日志文件中使用特定的行分隔符。如果使用后者,\n
将是一个不错的选择,如果您使用的是基于* nix的服务器。如果您总是在服务器上的Microsoft堆栈上,那么\r\n
可能是更好的选择。