[英]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.