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

读线

公共字符串 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...

于 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 回答