我有一个文件,我想在每行的字符串中读取。如果该行没有以CRLF结尾(\ r \ n),我想打印一些东西。我通过重定向打印命令的输出来制作此文件,类似于以下内容。
System.out.println("Test\r\n");
但是当我使用缓冲读取器从文件中读取此行时,它似乎不会捕获CRLF。
我使用以下方法来检测crlf(其中inputline是已读入的行)。
if(inputline.indexOf("\r\n")<0)
它永远不会检测到\ r \ n。我该如何解决这个问题?这是缓冲读卡器的问题吗?
答案 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());
}