![](/img/trans.png)
[英]Java 1.4.2's replace() takes in chars only, how can I get a char value of \n and \r\n carriage returns?
[英]Why I get \r\r\n as newline instead of \r\n as newline char in Windows
我下面有readfile()java函數來讀取.htm文件
private String readfile(String inputDoc) throws IOException {
FileInputStream fis = null;
InputStreamReader isr = null;
String text = null;
//open input stream to file
fis = new FileInputStream(inputDoc);
isr = new InputStreamReader(fis, "UTF-8");
StringBuffer buffer = new StringBuffer();
int c;
while( (c = isr.read()) != -1 ) {
buffer.append((char)c);
}
text = buffer.toString();
isr.close();
return text;
}
這是輸入文檔的示例片段
<?xml version="1.0" encoding="utf-8"?><html>
<head>
由於某種原因,從readfile()返回的文本字符串為<?xml version="1.0" encoding="utf-8"?><html>\\r\\r\\n<head>
但我希望它是 <?xml version="1.0" encoding="utf-8"?><html>\\r\\n<head>
因為它是概述這里換行字符在windows \\ r \\ n
我在Windows 7的IntelliJ Idea中運行了上述功能(IDEA默認編碼設置為UTF-8)。
有誰知道為什么我從readfile(String inputDoc)函數換行換到這個奇怪的結果
編寫\\n
,為了可移植性,它在Windows上擴展為\\r\\n
。 這樣,無論在什么操作系統上運行,都可以得到正確的結果,而無需其他代碼:在Windows上為\\r\\n
,在Unix上僅為\\n
。 看起來您正在以二進制模式讀取輸入(在文本模式下,相同的擴展也相反發生:輸入中的任何\\r\\n
都變成\\n
,因此您不必再擔心OS),因此您參見\\r
。 然后,當您編寫\\n
,它將擴展為\\r\\n
,剩下兩個\\r
。
之所以會這樣,是因為在輸入文件中是這樣的。 嘗試在十六進制編輯器中打開輸入文件以進行驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.