我正在尝试阅读一个包含 -
的文本文件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);
当我现在读到这个文件的时候,我出去打招呼詹姆斯!你今天好吗!
我没有得到'怎么样。有什么可以改变这一点来获得完整的文本?
答案 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++