-2

を含むテキスト ファイルを読み込もうとしています -

こんにちはジェームズ!

今日は元気ですか!

以下のコードを使用しています。

int readedValue;

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

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

ここでファイルを読み取ると、hello James!ow are you today! という出力が得られます。

私はどのように「方法」を得ていません。これを変更して完全なテキストを取得するにはどうすればよいですか?

4

4 に答える 4

1

これが必要だと思います...

int readedValue;

while ((readedValue = bufferReader.read()) != -1)
{   
    if(readedValue  != 10)
    {
         System.out.print((char) readedValue);
   } 

}
于 2013-10-02T17:33:55.237 に答える
1

do-whileループの条件でキャラクターを失っています

do {
    ...
    // ends when the first new line \n character is reached
}
while ((readedValue = bufferReader.read()) != -1);
        ^ never printed 
// the character that isn't read is the first character after the \n, ie. 'H'

readedValue(readValue)を格納し、そのループで比較を行う単一のループを使用します。

于 2013-10-02T17:36:26.493 に答える
0

これはあなたを助けるでしょう:

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);
    }
}
于 2013-10-03T16:20:08.840 に答える
0

あなたの例では、改行がASCII 10に遭遇したときに文字を2回読んでいます

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

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

あなたがすべきことは、一度だけ読むことです

while ((readedValue = bufferReader.read()) != -1)
{   
    if(readedValue != 10) 
   {
    char ch = (char) readedValue;
    System.out.print(ch);
   } 

}
于 2013-10-02T17:37:17.320 に答える