java.lang.Object | |
↳ | java.util.Scanner |
A parser that parses a text string of primitive types and strings with the
help of regular expressions. This class is not as useful as it might seem.
It's very inefficient for communicating between machines; you should use JSON,
protobufs, or even XML for that. Very simple uses might get away with split(String)
.
For input from humans, the use of locale-specific regular expressions make it not only
expensive but also somewhat unpredictable.
This class supports localized numbers and various
radixes. The input is broken into tokens by the delimiter pattern, which is
\\p{javaWhitespace
} by default.
Example:
Scanner s = new Scanner("1A true"); assertEquals(26, s.nextInt(16)); assertEquals(true, s.nextBoolean());
The Scanner
class is not thread-safe.
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Creates a
Scanner with the specified File as input. | |||||||||||
Creates a
Scanner with the specified File as input. | |||||||||||
Creates a
Scanner on the specified string. | |||||||||||
Creates a
Scanner on the specified InputStream . | |||||||||||
Creates a
Scanner on the specified InputStream . | |||||||||||
Creates a
Scanner with the specified Readable as input. | |||||||||||
Creates a
Scanner with the specified ReadableByteChannel as
input. | |||||||||||
Creates a
Scanner with the specified ReadableByteChannel as
input. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Closes this
Scanner and the underlying input if the input implements
Closeable . | |||||||||||
Returns the delimiter
Pattern in use by this Scanner . | |||||||||||
Compiles the pattern string and tries to find a substring matching it in the input data.
| |||||||||||
Tries to find the pattern in the input.
| |||||||||||
Tries to find the pattern in the input between the current position and the specified
horizon.
| |||||||||||
Tries to find the pattern in the input between the current position and the specified
horizon . | |||||||||||
Returns whether this
Scanner has one or more tokens remaining to parse. | |||||||||||
Returns
true if this Scanner has one or more tokens remaining to parse
and the next token matches a pattern compiled from the given string. | |||||||||||
Returns whether this
Scanner has one or more tokens remaining to parse
and the next token matches the given pattern. | |||||||||||
Returns whether the next token can be translated into a valid
BigDecimal . | |||||||||||
Returns whether the next token can be translated into a valid
BigInteger in the specified radix. | |||||||||||
Returns whether the next token can be translated into a valid
BigInteger in the default radix. | |||||||||||
Returns whether the next token can be translated into a valid
boolean value. | |||||||||||
Returns whether the next token can be translated into a valid
byte value in the default radix. | |||||||||||
Returns whether the next token can be translated into a valid
byte value in the specified radix. | |||||||||||
Returns whether the next token translated into a valid
double
value. | |||||||||||
Returns whether the next token can be translated into a valid
float value. | |||||||||||
Returns whether the next token can be translated into a valid
int
value in the specified radix. | |||||||||||
Returns whether the next token can be translated into a valid
int
value in the default radix. | |||||||||||
Returns true if there is a line terminator in the input.
| |||||||||||
Returns whether the next token can be translated into a valid
long value in the specified radix. | |||||||||||
Returns whether the next token can be translated into a valid
long value in the default radix. | |||||||||||
Returns whether the next token can be translated into a valid
short value in the specified radix. | |||||||||||
Returns whether the next token can be translated into a valid
short value in the default radix. | |||||||||||
Returns the last
IOException that was raised while reading from the underlying
input, or null if none was thrown. | |||||||||||
Returns the
Locale of this Scanner . | |||||||||||
Returns the result of the last matching operation.
| |||||||||||
Returns the next token.
| |||||||||||
Returns the next token if it matches the specified pattern.
| |||||||||||
Returns the next token if it matches the specified pattern.
| |||||||||||
Returns the next token as a
BigDecimal . | |||||||||||
Returns the next token as a
BigInteger with the specified radix. | |||||||||||
Returns the next token as a
BigInteger in the current radix. | |||||||||||
Returns the next token as a
boolean . | |||||||||||
Returns the next token as a
byte in the current radix. | |||||||||||
Returns the next token as a
byte with the specified radix. | |||||||||||
Returns the next token as a
double . | |||||||||||
Returns the next token as a
float . | |||||||||||
Returns the next token as an
int with the specified radix. | |||||||||||
Returns the next token as an
int in the current radix. | |||||||||||
Returns the skipped input and advances the
Scanner to the beginning of
the next line. | |||||||||||
Returns the next token as a
long with the specified radix. | |||||||||||
Returns the next token as a
long in the current radix. | |||||||||||
Returns the next token as a
short with the specified radix. | |||||||||||
Returns the next token as a
short in the current radix. | |||||||||||
Return the radix of this
Scanner . | |||||||||||
Remove is not a supported operation on
Scanner . | |||||||||||
Resets this scanner's delimiter, locale, and radix.
| |||||||||||
Tries to use the specified string to construct a pattern and then uses
the constructed pattern to match input starting from the current position.
| |||||||||||
Tries to use specified pattern to match input starting from the current position.
| |||||||||||
Returns a string representation of this
Scanner . | |||||||||||
Sets the delimiting pattern of this
Scanner with a pattern compiled from
the supplied string value. | |||||||||||
Sets the delimiting pattern of this
Scanner . | |||||||||||
Sets the
Locale of this Scanner to a specified Locale . | |||||||||||
Sets the radix of this
Scanner to the specified radix. |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
java.io.Closeable
| |||||||||||
From interface
java.lang.AutoCloseable
| |||||||||||
From interface
java.util.Iterator
|
Creates a Scanner
with the specified File
as input. The default charset
is applied when reading the file.
src | the file to be scanned. |
---|
FileNotFoundException | if the specified file does not exist. |
---|
Creates a Scanner
with the specified File
as input. The specified charset
is applied when reading the file.
src | the file to be scanned. |
---|---|
charsetName | the name of the encoding type of the file. |
FileNotFoundException | if the specified file does not exist. |
---|---|
IllegalArgumentException | if the specified coding does not exist. |
Creates a Scanner
on the specified string.
src | the string to be scanned. |
---|
Creates a Scanner
on the specified InputStream
. The default charset is
applied when decoding the input.
src | the InputStream to be scanned.
|
---|
Creates a Scanner
on the specified InputStream
. The specified charset is
applied when decoding the input.
src | the InputStream to be scanned. |
---|---|
charsetName | the encoding type of the InputStream . |
IllegalArgumentException | if the specified character set is not found. |
---|
Creates a Scanner
with the specified Readable
as input.
src | the Readable to be scanned.
|
---|
Creates a Scanner
with the specified ReadableByteChannel
as
input. The default charset is applied when decoding the input.
src | the ReadableByteChannel to be scanned.
|
---|
Creates a Scanner
with the specified ReadableByteChannel
as
input. The specified charset is applied when decoding the input.
src | the ReadableByteChannel to be scanned. |
---|---|
charsetName | the encoding type of the content. |
IllegalArgumentException | if the specified character set is not found. |
---|
Closes this Scanner
and the underlying input if the input implements
Closeable
. If the Scanner
has been closed, this method will have
no effect. Any scanning operation called after calling this method will throw
an IllegalStateException
.
Returns the delimiter Pattern
in use by this Scanner
.
Pattern
in use by this Scanner
.
Compiles the pattern string and tries to find a substring matching it in the input data. The
delimiter will be ignored. This is the same as invoking
findInLine(Pattern.compile(pattern))
.
pattern | a string used to construct a pattern which is in turn used to match a substring of the input data. |
---|
null
if the pattern is not found
before the next line terminator.IllegalStateException | if the Scanner is closed. |
---|
Tries to find the pattern in the input. Delimiters are ignored. If the
pattern is found before line terminator, the matched string will be
returned, and the Scanner
will advance to the end of the matched string.
Otherwise, null
will be returned and the Scanner
will not advance.
When waiting for input, the Scanner
may be blocked. All the
input may be cached if no line terminator exists in the buffer.
pattern | the pattern to find in the input. |
---|
null
if the pattern is not found
before the next line terminator.IllegalStateException | if the Scanner is closed.
|
---|
Tries to find the pattern in the input between the current position and the specified
horizon. Delimiters are ignored. If the pattern is found, the matched
string will be returned, and the Scanner
will advance to the end of the
matched string. Otherwise, null will be returned and Scanner
will not
advance. When waiting for input, the Scanner
may be blocked.
The Scanner
's search will never go more than horizon
code points from current
position. The position of horizon
does have an effect on the result of the
match. For example, when the input is "123" and current position is at zero,
findWithinHorizon(Pattern.compile("\\p{Digit}{3}"), 2)
will return null
, while
findWithinHorizon(Pattern.compile("\\p{Digit}{3}"), 3)
will return "123"
. horizon
is treated as a transparent,
non-anchoring bound. (refer to
useTransparentBounds(boolean)
and
useAnchoringBounds(boolean)
)
A horizon
whose value is zero will be ignored and the whole input will be
used for search. In this situation, all the input may be cached.
pattern | the pattern used to scan. |
---|---|
horizon | the search limit. |
null
if the pattern is not found
within the specified horizon
.IllegalStateException | if the Scanner is closed. |
---|---|
IllegalArgumentException | if horizon is less than zero.
|
Tries to find the pattern in the input between the current position and the specified
horizon
. Delimiters are ignored. This call is the same as invoking
findWithinHorizon(Pattern.compile(pattern))
.
pattern | the pattern used to scan. |
---|---|
horizon | the search limit. |
null
if the pattern is not found
within the specified horizon.IllegalStateException | if the Scanner is closed. |
---|---|
IllegalArgumentException | if horizon is less than zero. |
Returns whether this Scanner
has one or more tokens remaining to parse.
This method will block if the data is still being read.
true
if this Scanner
has one or more tokens remaining,
otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns true
if this Scanner
has one or more tokens remaining to parse
and the next token matches a pattern compiled from the given string. This method will
block if the data is still being read. This call is equivalent to
hasNext(Pattern.compile(pattern))
.
pattern | the string specifying the pattern to scan for |
---|
true
if the specified pattern matches this Scanner
's
next token, false
otherwise.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether this Scanner
has one or more tokens remaining to parse
and the next token matches the given pattern. This method will block if the data is
still being read.
pattern | the pattern to check for. |
---|
true
if this Scanner
has more tokens and the next token
matches the pattern, false
otherwise.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
BigDecimal
.
true
if the next token can be translated into a valid
BigDecimal
, otherwise false.
IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
BigInteger
in the specified radix.
radix | the radix used to translate the token into a
BigInteger . |
---|
true
if the next token can be translated into a valid
BigInteger
, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
BigInteger
in the default radix.
true
if the next token can be translated into a valid
BigInteger
, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
boolean
value.
true
if the next token can be translated into a valid
boolean
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
byte
value in the default radix.
true
if the next token can be translated into a valid
byte
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
byte
value in the specified radix.
radix | the radix used to translate the token into a byte
value |
---|
true
if the next token can be translated into a valid
byte
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token translated into a valid double
value.
true
if the next token can be translated into a valid
double
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
float
value.
true
if the next token can be translated into a valid
float
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid int
value in the specified radix.
radix | the radix used to translate the token into an int
value. |
---|
true
if the next token in this Scanner
's input can be
translated into a valid int
value, otherwise
false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid int
value in the default radix.
true
if the next token can be translated into a valid
int
value, otherwise false
.IllegalStateException | if the Scanner has been closed,
|
---|
Returns true if there is a line terminator in the input. This method may block.
IllegalStateException | if this Scanner is closed.
|
---|
Returns whether the next token can be translated into a valid
long
value in the specified radix.
radix | the radix used to translate the token into a long
value. |
---|
true
if the next token can be translated into a valid
long
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
long
value in the default radix.
true
if the next token can be translated into a valid
long
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
short
value in the specified radix.
radix | the radix used to translate the token into a short
value. |
---|
true
if the next token can be translated into a valid
short
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns whether the next token can be translated into a valid
short
value in the default radix.
true
if the next token can be translated into a valid
short
value, otherwise false
.IllegalStateException | if the Scanner has been closed.
|
---|
Returns the last IOException
that was raised while reading from the underlying
input, or null
if none was thrown.
Returns the result of the last matching operation.
The next* and find* methods return the match result in the case of a successful match.
IllegalStateException | if the match result is not available, of if the last match was not successful. |
---|
Returns the next token. The token will be both prefixed and suffixed by the delimiter that is currently being used (or a string that matches the delimiter pattern). This method will block if input is being read.
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
Returns the next token if it matches the specified pattern. The token will be both prefixed and suffixed by the delimiter that is currently being used (or a string that matches the delimiter pattern). This method will block if input is being read.
pattern | the specified pattern to scan. |
---|
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token does not match the pattern given. |
Returns the next token if it matches the specified pattern. The token
will be both prefixed and suffixed by the delimiter that is currently
being used (or a string that matches the delimiter pattern). This method will block
if input is being read. Calling this method is equivalent to
next(Pattern.compile(pattern))
.
pattern | the string specifying the pattern to scan for. |
---|
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token does not match the pattern given. |
Returns the next token as a BigDecimal
. This method will block if input is
being read. If the next token can be translated into a BigDecimal
the following is done: All Locale
-specific prefixes, group separators,
and Locale
-specific suffixes are removed. Then non-ASCII digits are
mapped into ASCII digits via digit(char, int)
, and a
negative sign (-) is added if the Locale
-specific negative prefix or
suffix was present. Finally the resulting string is passed to
BigDecimal(String)
.
BigDecimal
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
BigDecimal .
|
Returns the next token as a BigInteger
with the specified radix.
This method will block if input is being read. If the next token can be translated
into a BigInteger
the following is done: All Locale
-specific
prefixes, group separators, and Locale
-specific suffixes are removed.
Then non-ASCII digits are mapped into ASCII digits via
digit(char, int)
, and a negative sign (-) is added if the
Locale
-specific negative prefix or suffix was present. Finally the
resulting String is passed to BigInteger(String, int)
}
with the specified radix.
radix | the radix used to translate the token into a
BigInteger . |
---|
BigInteger
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
BigInteger .
|
Returns the next token as a BigInteger
in the current radix.
This method may block for more input.
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
BigInteger .
|
Returns the next token as a boolean
. This method will block if input is
being read.
boolean
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
boolean value.
|
Returns the next token as a byte
in the current radix.
This method may block for more input.
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
byte value.
|
Returns the next token as a byte
with the specified radix. Will
block if input is being read. If the next token can be translated into a
byte
the following is done: All Locale
-specific prefixes, group
separators, and Locale
-specific suffixes are removed. Then non-ASCII
digits are mapped into ASCII digits via
digit(char, int)
, and a negative sign (-) is added if the
Locale
-specific negative prefix or suffix was present. Finally the
resulting String is passed to parseByte(String, int)
} with
the specified radix.
radix | the radix used to translate the token into byte value. |
---|
byte
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
byte value.
|
Returns the next token as a double
. This method will block if input is being
read. If the next token can be translated into a double
the
following is done: All Locale
-specific prefixes, group separators, and
Locale
-specific suffixes are removed. Then non-ASCII digits are mapped
into ASCII digits via digit(char, int)
, and a negative
sign (-) is added if the Locale
-specific negative prefix or suffix was
present. Finally the resulting String is passed to
parseDouble(String)
}. If the token matches the localized
NaN or infinity strings, it is also passed to
parseDouble(String)
}.
double
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
double value.
|
Returns the next token as a float
. This method will block if input is being
read. If the next token can be translated into a float
the
following is done: All Locale
-specific prefixes, group separators, and
Locale
-specific suffixes are removed. Then non-ASCII digits are mapped
into ASCII digits via digit(char, int)
, and a negative
sign (-) is added if the Locale
-specific negative prefix or suffix was
present. Finally the resulting String is passed to
parseFloat(String)
}.If the token matches the localized NaN
or infinity strings, it is also passed to
parseFloat(String)
}.
float
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
float value.
|
Returns the next token as an int
with the specified radix. This method will
block if input is being read. If the next token can be translated into an
int
the following is done: All Locale
-specific prefixes, group
separators, and Locale
-specific suffixes are removed. Then non-ASCII
digits are mapped into ASCII digits via
digit(char, int)
, and a negative sign (-) is added if the
Locale
-specific negative prefix or suffix was present. Finally the
resulting String is passed to parseInt(String, int)
with
the specified radix.
radix | the radix used to translate the token into an int
value. |
---|
int
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
int value.
|
Returns the next token as an int
in the current radix.
This method may block for more input.
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
int value.
|
Returns the skipped input and advances the Scanner
to the beginning of
the next line. The returned result will exclude any line terminator. When
searching, if no line terminator is found, then a large amount of input
will be cached. If no line at all can be found, a NoSuchElementException
will be thrown.
IllegalStateException | if the Scanner is closed. |
---|---|
NoSuchElementException | if no line can be found, e.g. when input is an empty string. |
Returns the next token as a long
with the specified radix. This method will
block if input is being read. If the next token can be translated into a
long
the following is done: All Locale
-specific prefixes, group
separators, and Locale
-specific suffixes are removed. Then non-ASCII
digits are mapped into ASCII digits via
digit(char, int)
, and a negative sign (-) is added if the
Locale
-specific negative prefix or suffix was present. Finally the
resulting String is passed to parseLong(String, int)
} with
the specified radix.
radix | the radix used to translate the token into a long
value. |
---|
long
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
long value.
|
Returns the next token as a long
in the current radix.
This method may block for more input.
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
long value.
|
Returns the next token as a short
with the specified radix. This method will
block if input is being read. If the next token can be translated into a
short
the following is done: All Locale
-specific prefixes, group
separators, and Locale
-specific suffixes are removed. Then non-ASCII
digits are mapped into ASCII digits via
digit(char, int)
, and a negative sign (-) is added if the
Locale
-specific negative prefix or suffix was present. Finally the
resulting String is passed to parseShort(String, int)
}
with the specified radix.
radix | the radix used to translate the token into short
value. |
---|
short
.IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
short value.
|
Returns the next token as a short
in the current radix.
This method may block for more input.
IllegalStateException | if this Scanner has been closed. |
---|---|
NoSuchElementException | if input has been exhausted. |
InputMismatchException | if the next token can not be translated into a valid
short value.
|
Return the radix of this Scanner
.
Scanner
Remove is not a supported operation on Scanner
.
UnsupportedOperationException | if this method is invoked. |
---|
Resets this scanner's delimiter, locale, and radix.
Tries to use the specified string to construct a pattern and then uses
the constructed pattern to match input starting from the current position. The
delimiter will be ignored. This call is the same as invoke
skip(Pattern.compile(pattern))
.
pattern | the string used to construct a pattern which in turn is used to match input. |
---|
Scanner
itself.IllegalStateException | if the Scanner is closed.
|
---|
Tries to use specified pattern to match input starting from the current position.
The delimiter will be ignored. If a match is found, the matched input will be
skipped. If an anchored match of the specified pattern succeeds, the corresponding input
will also be skipped. Otherwise, a NoSuchElementException
will be thrown.
Patterns that can match a lot of input may cause the Scanner
to read
in a large amount of input.
pattern | used to skip over input. |
---|
Scanner
itself.IllegalStateException | if the Scanner is closed. |
---|---|
NoSuchElementException | if the specified pattern match fails. |
Returns a string representation of this Scanner
. The information
returned may be helpful for debugging. The format of the string is unspecified.
Scanner
.
Sets the delimiting pattern of this Scanner
with a pattern compiled from
the supplied string value.
pattern | a string from which a Pattern can be compiled. |
---|
Scanner
.
Sets the delimiting pattern of this Scanner
.
pattern | the delimiting pattern to use. |
---|
Scanner
.
Sets the Locale
of this Scanner
to a specified Locale
.
l | the specified Locale to use. |
---|
Scanner
.
Sets the radix of this Scanner
to the specified radix.
radix | the specified radix to use. |
---|
Scanner
.