をnullに保持する変数を設定し、それを閉じることなくなりましょうことができます。
public class UnClosableDecorator extends InputStream {
private final InputStream inputStream;
public UnClosableDecorator(InputStream inputStream) {
this.inputStream = inputStream;
}
@Override
public int read() throws IOException {
return inputStream.read();
}
@Override
public int read(byte[] b) throws IOException {
return inputStream.read(b);
}
@Override
public int read(byte[] b, int off, int len) throws IOException {
return inputStream.read(b, off, len);
}
@Override
public long skip(long n) throws IOException {
return inputStream.skip(n);
}
@Override
public int available() throws IOException {
return inputStream.available();
}
@Override
public synchronized void mark(int readlimit) {
inputStream.mark(readlimit);
}
@Override
public synchronized void reset() throws IOException {
inputStream.reset();
}
@Override
public boolean markSupported() {
return inputStream.markSupported();
}
@Override
public void close() throws IOException {
//do nothing
}
}
単に代わりにSystem.inのカスタムFilterInputStream使用メイン
public static void main(String[] args) throws Exception {
System.setIn(new UnClosableDecorator(System.in));
}
をいくつかのコードを投稿してください... – nkukhar
はあなたが本当にクローズする必要がありますかスキャナ?ガベージコレクタに処理させておくことをお勧めします。基になるオブジェクトを閉じずに閉じられる方法はありません。 – ddmps
私のメソッドは、スキャナを宣言し、nextLine()を読み込んで返し、スキャナを閉じて次の実行時に頭痛を与えます。 私がそれを閉じないと、Eclipseは潜在的なリソースリークについて私に嫌うが、それを無視しても安全でしょうか? – deepy