繁体   English   中英

Apache Commons Net-System.getProperty(“ line.separator”)-在Android中不起作用

[英]Apache Commons Net - System.getProperty(“line.separator”) - does not work in Android

我使用Apache Commons API使用FTPClient类将新行添加到文件中。 当我在Java中运行以下代码时,会将新行添加到FTP服务器上的文件中。 但是,当我在Android中运行相同的代码时,字符串会附加到文件中,而不会出现新行。

为什么在Android下,新行使用-System.getProperty(“ line.separator”)-无法通过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);

Windows使用\\r\\n作为其行分隔符,而UNIX仅使用\\n因此请尝试使用

String log = "\n" + "blablabla"; 

要么

String log = "\r\n" + "blablabla"; 

代替

String log = System.getProperty("line.separator") + "blablabla"; 

由于文件位于服务器上 ,因此我不希望您使用客户机的 System.getProperty("line.separator"); 您想知道服务器上的行分隔符是什么,尤其是当您(显然)在二进制模式下工作时,因此FTP中间层无法为您进行行尾转换。 (曾经(可能仍然是)对于FTP客户端和服务器来说,这是很普遍的事情;它被称为“ ASCII”模式。 [啊,在那些宁静的日子,我们以为我们可以假定文本为ASCII,尽管知道内心深处,那是不可持续的……就像两位数的年……]

您可以从服务器查询该信息,也可以选择始终在服务器端日志文件中使用特定的行分隔符。 如果是后者,如果使用的是基于* nix的服务器, \\n将是一个不错的选择。 如果您始终在服务器上的Microsoft堆栈上,那么\\r\\n可能是一个更好的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM