2013-02-07 81 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()); 
}