簡體   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