2013-02-07 109 views
0

我有一個文件,我想讀取每行中的字符串。如果該行不以CRLF(\ r \ n)結尾,我想打印一些內容。我通過重定向來自類似於以下內容的打印命令來創建此文件。在字符串中查找CRLF

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

但是,當我在使用緩衝讀寫文件中讀取這條線,它似乎並不像它抓住了CRLF。

我使用以下來檢測crlf(其中inputline是已讀入的行)。

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

它從來沒有檢測到\ r \ n。我該如何補救?這是緩衝閱讀器的問題嗎?

回答

3

的readLine

公共字符串的readLine() 拋出IOException異常

讀取文本行的。換行符被換行符('\ 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 ...

+0

謝謝!用什麼更好? – user1964009

+0

如果不是CR/LF,您預計該行會以什麼結尾?你真的想在這裏做什麼?你可以讀取原始字節... – Floris

+1

如果沒有CRLF,我想打印一個語句。我怎樣才能讀取讀取的原始字節? – user1964009

1

您可以使用java.util.Scanner中它知道如何找到文件中的行(或文本)

Scanner sc = new Scanner(new File("filename")); 
while(sc.hasNextLine()) { 
    System.out.println(sc.nextLine()); 
}