トラブルシューティング |
JavaTM 2 SDK 目次 |
- File オブジェクトは、実際のファイルではなく、ファイル名を表しています。 また、このようなオブジェクトは不変です。 例を挙げます。
File f1 = new File("foo"); File f2 = new File("bar"); f1.renameTo(f2);上記のコードでは、「foo」というファイル (存在する場合) の名前が「bar」に変更されます。 このとき、f1 によって参照される File オブジェクトの値は変更されません。特に、式 f1.getPath() の評価は、「foo」のままです。- InputStream クラスとそのサブクラスの available メソッドの戻り値は、ブロックしないで読み込むことができるバイト数の最大値ではないことがあります。 例を挙げます。
int n = in.available(); byte buf = new byte[n]; in.read(buf);このコードの場合は、入力ストリームから残りのすべてのバイトが読み込まれないことがあります。 同様に、Reader とそのサブクラスの ready メソッドでは、ストリームを読み込む準備が完了している場合でも、false を返すことがあります。- InputStream とそのサブクラスの read(byte[]) および read(byte[], int, int) メソッドでは、読み込み可能なすべてのバイトが読み込まれないことがあります。 たとえば、大きなファイルを配列に読み込む場合は、ループが必要です。
for (int off = 0; off < size;) { int r = in.read(buf, off, buf.length - off); if (r == -1) break; off += r; }または、BufferedInputStream を使用することもできます。 Reader およびそのサブクラスの read(char[]) および read(char[], int, int) メソッドについても、同様です。- PrintStream および PrintWriter クラスでは、入出力エラーはすべて抑制されます。 エラーが発生したかどうかを確認するには、checkError メソッドを呼び出します。
- PrintStream および PrintWriter オブジェクトでは、出力がフラッシュされないことがあります。 自動的にフラッシュするには、これらのクラスから 2 つの引数をとるコンストラクタを呼び出して、第 2 引数に true を指定します。
Copyright © 1999 Sun Microsystems, Inc. All Rights Reserved. |
Java ソフトウェア |