[英]Java System.getProperty(“line.separator”) not working in apache server
[英]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.