java.io

Class InputStreamReader

Implemented Interfaces:
Closeable, Readable
Known Direct Subclasses:
FileReader

public class InputStreamReader
extends Reader

This class reads characters from a byte input stream. The characters read are converted from bytes in the underlying stream by a decoding layer. The decoding layer transforms bytes to chars according to an encoding standard. There are many available encodings to choose from. The desired encoding can either be specified by name, or if no encoding is selected, the system default encoding will be used. The system default encoding name is determined from the system property file.encoding. The only encodings that are guaranteed to be availalbe are "8859_1" (the Latin-1 character set) and "UTF8". Unforunately, Java does not provide a mechanism for listing the ecodings that are supported in a given implementation.

Here is a list of standard encoding names that may be available:

It is recommended that applications do not use InputStreamReader's directly. Rather, for efficiency purposes, an object of this class should be wrapped by a BufferedReader.

Due to a deficiency the Java class library design, there is no standard way for an application to install its own byte-character encoding.

See Also:
BufferedReader, InputStream

Field Summary

Fields inherited from class java.io.Reader

lock

Constructor Summary

InputStreamReader(InputStream in)
This method initializes a new instance of InputStreamReader to read from the specified stream using the default encoding.
InputStreamReader(InputStream in, String encoding_name)
This method initializes a new instance of InputStreamReader to read from the specified stream using a caller supplied character encoding scheme.
InputStreamReader(InputStream in, Charset charset)
Creates an InputStreamReader that uses a decoder of the given charset to decode the bytes in the InputStream into characters.
InputStreamReader(InputStream in, CharsetDecoder decoder)
Creates an InputStreamReader that uses the given charset decoder to decode the bytes in the InputStream into characters.

Method Summary

void
close()
This method closes this stream, as well as the underlying InputStream.
String
getEncoding()
This method returns the name of the encoding that is currently in use by this object.
int
read()
Reads an char from the input stream and returns it as an int in the range of 0-65535.
int
read(char[] buf, int offset, int length)
This method reads up to length characters from the stream into the specified array starting at index offset into the array.
boolean
ready()
This method checks to see if the stream is ready to be read.
long
skip(long count)
Skips the specified number of chars in the stream.

Methods inherited from class java.io.Reader

close, mark, markSupported, read, read, read, read, ready, reset, skip

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

InputStreamReader

public InputStreamReader(InputStream in)
This method initializes a new instance of InputStreamReader to read from the specified stream using the default encoding.
Parameters:
in - The InputStream to read from

InputStreamReader

public InputStreamReader(InputStream in,
                         String encoding_name)
            throws UnsupportedEncodingException
This method initializes a new instance of InputStreamReader to read from the specified stream using a caller supplied character encoding scheme. Note that due to a deficiency in the Java language design, there is no way to determine which encodings are supported.
Parameters:
in - The InputStream to read from
encoding_name - The name of the encoding scheme to use
Throws:
UnsupportedEncodingException - If the encoding scheme requested is not available.

InputStreamReader

public InputStreamReader(InputStream in,
                         Charset charset)
Creates an InputStreamReader that uses a decoder of the given charset to decode the bytes in the InputStream into characters.
Since:
1.4

InputStreamReader

public InputStreamReader(InputStream in,
                         CharsetDecoder decoder)
Creates an InputStreamReader that uses the given charset decoder to decode the bytes in the InputStream into characters.
Since:
1.4

Method Details

close

public void close()
            throws IOException
This method closes this stream, as well as the underlying InputStream.
Specified by:
close in interface Closeable
Overrides:
close in interface Reader
Throws:
IOException - If an error occurs

getEncoding

public String getEncoding()
This method returns the name of the encoding that is currently in use by this object. If the stream has been closed, this method is allowed to return null.
Returns:
The current encoding name

read

public int read()
            throws IOException
Reads an char from the input stream and returns it as an int in the range of 0-65535. This method also will return -1 if the end of the stream has been reached.

This method will block until the char can be read.

Overrides:
read in interface Reader
Returns:
The char read or -1 if end of stream
Throws:
IOException - If an error occurs

read

public int read(char[] buf,
                int offset,
                int length)
            throws IOException
This method reads up to length characters from the stream into the specified array starting at index offset into the array.
Parameters:
buf - The character array to recieve the data read
offset - The offset into the array to start storing characters
length - The requested number of characters to read.
Returns:
The actual number of characters read, or -1 if end of stream.
Throws:
IOException - If an error occurs

ready

public boolean ready()
            throws IOException
This method checks to see if the stream is ready to be read. It will return true if is, or false if it is not. If the stream is not ready to be read, it could (although is not required to) block on the next read attempt.
Overrides:
ready in interface Reader
Returns:
true if the stream is ready to be read, false otherwise
Throws:
IOException - If an error occurs

skip

public long skip(long count)
            throws IOException
Skips the specified number of chars in the stream. It returns the actual number of chars skipped, which may be less than the requested amount.
Overrides:
skip in interface Reader
Parameters:
count - The requested number of chars to skip
Returns:
The actual number of chars skipped.
Throws:
IOException - If an error occurs

InputStreamReader.java -- Reader than transforms bytes to chars Copyright (C) 1998, 1999, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.