Index: src/test/java/tests/api/java/util/ScannerTest.java =================================================================== --- src/test/java/tests/api/java/util/ScannerTest.java (revision 470208) +++ src/test/java/tests/api/java/util/ScannerTest.java (working copy) @@ -34,6 +34,7 @@ import java.nio.CharBuffer; import java.nio.channels.FileChannel; import java.nio.channels.ReadableByteChannel; +import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; import java.util.Arrays; @@ -44,6 +45,8 @@ import java.util.regex.MatchResult; import java.util.regex.Pattern; +import tests.support.Support_PortManager; + import junit.framework.TestCase; public class ScannerTest extends TestCase { @@ -5482,4 +5485,31 @@ // do nothing } } + + /** + * @tests java.util.Scanner#Scanner(ReadableByteChannel) + */ + public void test_Constructor_LReadableByteChannel() + throws IOException { + InetSocketAddress localAddr = new InetSocketAddress("127.0.0.1", + Support_PortManager.getNextPort()); + ServerSocketChannel ssc = ServerSocketChannel.open(); + ssc.socket().bind(localAddr); + + SocketChannel sc = SocketChannel.open(); + sc.connect(localAddr); + sc.configureBlocking(false); + assertFalse(sc.isBlocking()); + + ssc.accept().close(); + ssc.close(); + assertFalse(sc.isBlocking()); + + Scanner s = new Scanner(sc); + while (s.hasNextInt()) { + s.nextInt(); + } + + sc.close(); + } } Index: src/main/java/java/util/Scanner.java =================================================================== --- src/main/java/java/util/Scanner.java (revision 471635) +++ src/main/java/java/util/Scanner.java (working copy) @@ -292,12 +292,7 @@ throw new IllegalArgumentException(org.apache.harmony.luni.util.Msg .getString("KA009")); //$NON-NLS-1$ } - try { - input = new InputStreamReader(Channels.newInputStream(src), - charsetName); - } catch (UnsupportedEncodingException e) { - throw new IllegalArgumentException(e.getMessage()); - } + input = Channels.newReader(src, charsetName); initialization(); }