2

次のコードがあります。

public static void main(String[] args) throws Exception {
    String s = "";
    StringBuilder sb = new StringBuilder();
    File file = new File("C:\\New\\r.txt");

    BufferedReader in = new BufferedReader(new FileReader(file));
    while(in.readLine() != null) {      
        sb.append(in.readLine());
    }

    System.out.println(sb);
    s = sb.toString();
    byte[] b = s.getBytes();

   for(int i = 0; i < b.length; i++) {
       if(b[i] == 1){ b[i]=0; }
       if(b[i] == 0){ b[i]=1; }
   }

   FileOutputStream fos = new FileOutputStream(file);
   DataOutputStream dos = new DataOutputStream(fos);
   dos.write(b);
   in.close();
   fos.close();
   dos.close();
}

このプログラムを実行すると、null が返されます。多分私はプログラムを昇格させる必要がありますか?助けていただければ幸いです。

4

3 に答える 3

2

変化する:

 while(in.readLine()!=null)

に:

 while((s = in.readLine())!=null)

その後:

sb.append(s);

コードをin.readLine()2 回呼び出すと、2 行が読み取られますが、各反復で 2 番目のみが出力されます。

于 2012-12-15T05:38:50.730 に答える
1

あなたはすべての奇妙な行を捨てています:

while(in.readLine()!=null)
{      
   sb.append(in.readLine());
}

1行しか含まれていない場合、 の最初の行がこれr.txtを行うため、に文字列「null」が表示されます。StringBufferStringBuffer.append

public AbstractStringBuilder append(String str) {
  if (str == null) str = "null";
  ....
}

2 行ある場合は、行末が「null」の最初の行を取得します。

以下は、ファイルのすべての行を に追加しますStringBuffer

String line = null;
while((line = in.readLine()) != null)
{      
   sb.append(line);
}
于 2012-12-15T05:41:40.233 に答える
0

あなたのコード

while(in.readLine() != null) {      
        sb.append(in.readLine());
    }

それと変わる

  while ((s = in.readLine()) != null)
 {               
    sb.append(s);

 }
于 2012-12-15T05:43:38.210 に答える