0

ファイルがあり、各行の文字列を読み取りたい。行がCRLF(\ r \ n)で終わっていない場合は、何かを印刷したいと思います。このファイルは、次のような印刷コマンドからの出力をリダイレクトして作成しました。

System.out.println("Test\r\n");

しかし、バッファリーダーを使用してファイルからこの行を読み込んだ場合、CRLFをキャッチしていないようです。

私は以下を使用してcrlfを検出します(ここで、inputlineは読み込まれた行です)。

if(inputline.indexOf("\r\n")<0)

\ r\nを検出することはありません。どうすればこれを修正できますか?これはバッファ付きリーダーの問題ですか?

4

2 に答える 2

3

読み込まれた行

public String readLine()はIOExceptionをスローします

1行のテキストを読みます。改行は、改行('\ n')、キャリッジリターン('\ r')、またはキャリッジリターンの直後に改行が続くいずれかによって終了したと見なされます。

戻り値:

行の内容を含み、行末文字を含まない文字列、またはストリームの終わりに達した場合はnull

http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.htmlから

したがって、独自のコードを作成する必要がある場合があります(または、これをhttp://www.coderanch.com/t/276442//java/Reading-file-byte-arrayから借用します)

private byte[] toByteArray(File file) throws FileNotFoundException, IOException{  
    int length = (int) file.length();  
    byte[] array = new byte[length];  
    InputStream in = new FileInputStream(file);  
    int offset = 0;  
    while (offset < length) {  
        offset += in.read(array, offset, (length - offset));  
    }  
    in.close();  
    return array;  
    }

これにより、すべてのバイトが取得されます。何も削除されません。探して自分をノックアウト\r\n...

于 2013-02-07T04:28:36.853 に答える
1

ファイル(またはテキスト)内の行を見つける方法を知っているjava.util.Scannerを使用できます

Scanner sc = new Scanner(new File("filename"));
while(sc.hasNextLine()) {
    System.out.println(sc.nextLine());
}
于 2013-02-07T04:33:44.050 に答える