트러블 슈팅 - xrath.com 에서 번역됨

# 트러블 슈팅

JDKTM 목차

> - `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 Software