在字符串中查找CRLF

时间:2013-02-07 04:25:58

标签: java

我有一个文件,我想在每行的字符串中读取。如果该行没有以CRLF结尾(\ r \ n),我想打印一些东西。我通过重定向打印命令的输出来制作此文件,类似于以下内容。

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

但是当我使用缓冲读取器从文件中读取此行时,它似乎不会捕获CRLF。

我使用以下方法来检测crlf(其中inputline是已读入的行)。

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

它永远不会检测到\ r \ n。我该如何解决这个问题?这是缓冲读卡器的问题吗?

2 个答案:

答案 0 :(得分:3)

  

的readLine

     

public String 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 ...

答案 1 :(得分:1)

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

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