在Java中使用EOL读取文本文件

时间:2013-10-02 14:00:59

标签: java

我正在尝试阅读一个包含 -

的文本文件
hello James!
How are you today!

我想读取字符串中的每个字符,直到找到EOL字符。因为我正在使用windows,其中我有/ n / r代表EOL字符。如何编写条件来遍历所有字符字符串并逐个打印,直到达到EOL(/ n / r)。

int readedValue;

do
{   
    while((readedValue = bufferReader.read()) != 10)
   {
    //readedValue = bufferReader.read();
    char ch = (char) readedValue;
    System.out.print(ch);
   } 

}
while ((readedValue = bufferReader.read()) != -1);

当我现在读到这个文件的时候,我出去打招呼詹姆斯!你今天好吗!

我没有得到'怎么样。有什么可以改变这一点来获得完整的文本?

3 个答案:

答案 0 :(得分:1)

你可以使用类似的东西:

while((line=input.readLine())!=null) {
    // do something
}

如果您想通过char读取char,可以使用:

int readedValue;
while ((readedValue = reader.read()) != -1) {
    char ch = (char) readedValue;
    // do something
}

以下是您的新问题的示例(使用字符串而不是文件):

String line;
int readedValue;
String s = "hello James!\n\rHow are you today!";
StringReader input = new StringReader(s);
BufferedReader lineReader= new BufferedReader (input);

while((line=lineReader.readLine())!=null) {
    StringReader input2 = new StringReader(line);
    BufferedReader charReader= new BufferedReader (input2);
    while((readedValue = charReader.read()) != -1) {
        char ch = (char) readedValue;
        System.out.print(ch);
    }
}

答案 1 :(得分:1)

正如人们所指出的那样,readline()方法会读取下一行分隔符,并返回删除了分隔符的行。因此,'\n'中对'\r'line的测试无法评估为true

但是,当您输出line字符串 1 时,您可以轻松添加额外的行尾。

1 - 也就是说,除非您确实需要保留与输入流中完全相同的行尾序列字符。

你问:

  

不是使用readline(),有没有办法可以使用缓冲读取器读取每个字符并打印出来?

是的,当然。 read()方法返回一个字符或-1以指示EOF。所以:

    int ch = br.read();
    while (ch != -1) {
       System.out.print((char) ch);
       ch = br.read();
    }

答案 2 :(得分:0)

你的问题与幻数有关。

你的同时将进入一个无限循环的情况下charAt(21)!=' \ n' &安培;&安培;的charAt(22)='!\ r'

这两个整数应该在循环内增加。

charAt(i)!='\n' && charAt(i+1)!='\r'
::inside loop
  i++