1

.htmファイルを読み取るためのreadfile()java関数が以下にあります

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

Windows7のIntelliJIdeaで上記の関数を実行しました(IDEAのデフォルトのエンコーディングはUTF-8に設定されています)

newlineのreadfile(String inputDoc)関数からこの奇妙な結果が得られる理由を誰かが知っていますか

4

2 に答える 2

7

を書くと、移植性のためにWindows上\nで拡張されます。\r\nそうすれば、どのオペレーティングシステムで実行していても、追加のコードなしで正しい結果が得られます\r\n。Windowsでも、\nUnixでも。バイナリモードで入力を読み取っているように見えます(テキストモードでは、同じ展開が逆に発生します。\r\n入力のいずれかがちょうど\nになるので、OSについて心配する必要はありません)\r。次に、を書くと\n、に展開され、2つのs\r\nが残ります。\r

于 2012-12-27T18:21:31.950 に答える
3

これは、入力ファイルでこのようになっているためです。入力ファイルを16進エディタで開いて確認してください。

于 2012-12-27T18:17:44.667 に答える