Nazdar,

v JDK 1.6 je k available() nasledujuci Javadoc:

<cite>
Returns an estimate of the number of bytes that can be read (or
skipped over) from this input stream without blocking by the next
invocation of a method for this input stream. The next invocation
might be the same thread or another thread. A single read or skip of
this many bytes will not block, but may read or skip fewer bytes.

Note that while some implementations of InputStream will return the
total number of bytes in the stream, many will not. It is never
correct to use the return value of this method to allocate a buffer
intended to hold all data in this stream.

A subclass' implementation of this method may choose to throw an
IOException if this input stream has been closed by invoking the
close() method.

The available method for class InputStream always returns 0.

This method should be overridden by subclasses.

Returns: an estimate of the number of bytes that can be read (or
skipped over) from this input stream without blocking or 0 when it
reaches the end of the input stream. Throws: IOException if an I/O
error occurs.
</cite>

Co vracia available() zavisi od implementacie streamu a nativnej
kniznice, pokial vracia 0, v ziadnom pripade to neznamena, ze uz zo
streamu nemozno citat (dalsie zavolanie read() moze kludne vratit
data).

Podla mna jedinym spolahlivym sposobom, ako riadit citanie zo streamu,
je kontrolovat navratovu hodnotu read(). Kontrakt read() metody je
daleko jednoznacnejsi, nez available():

<cite>
If no byte is available because the end of the stream has been
reached, the value -1 is returned.
</cite>

Takze odporucam zabudnut na available() a pouzivat navratovu hodnotu z read().

Maj sa,

Rado

2008/9/16 Vilhelm, Robert <[EMAIL PROTECTED]>
>
> Dobry den
>
>
>
> , asi jste prehlidl nasledujici:
>
>
>
> available():
>
> Returns the number of bytes that can be read (or skipped over) from this 
> input stream WITHOUT BLOCKING by the next caller of a method for this input 
> stream. The next caller might be the same thread or or another thread.
>
> hezky den
>
> Robert
>
>
>
>
>
> ________________________________
>
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Lukas Barton
> Sent: Dienstag, 16. September 2008 10:28
> To: Java
> Subject: Re: File.length() a InputStream.available()
>
>
>
> available() vraci neco jineho nez length(), viz javadoc:
>
>
> available():
>
> Returns the number of bytes that can be read (or skipped over) from this 
> input stream without blocking by the next caller of a method for this input 
> stream. The next caller might be the same thread or or another thread.
>
> length():
>
> Returns the length of the file denoted by this abstract pathname. The return 
> value is unspecified if this pathname denotes a directory.
>
>
>   Lukas
>
> On Tue, Sep 16, 2008 at 10:21 AM, Luká Zapletal <[EMAIL PROTECTED]> wrote:
>
> Zdravim konferenci,
>
> metoda length() tridy File vraci long, ale metoda available() tridy
> InputStream int. Je zde jisty typovy rozpor. Chtel jsem kouknout, jak
> je implementovana metoda available() tridy FileInputStream, ale je to
> nativni metoda.
>
> Nevi nekdo, jak se Java od Sunu chova pri cteni velikeho souboru,
> ktery presahne rozsah typu int? Co vraci metoda available tridy
> FileInputStream?
>
> LZ
>
> --
> Lukas Zapletal
> http://lukas.zapletalovi.com
>
>
>
> __________________________________________________________________
> Kreditwerk Hypotheken-Management GmbH
> Janderstraße 7-8
> D-68199 Mannheim
> Tel. + 49 (621) 87557-0
> Fax: +49 (621) 87557-111
>
> Geschäftsführer:
>   Beate Stollenwerk
>   Bernd Meier
>   Manfred Lund
>
> Sitz der Gesellschaft:             Handelsregister:
>   Mannheim                           Amtsgericht Mannheim HRB 8345
>
> http://www.hypotheken-management.com
>
> Als Inkassobüro zugelassen
> __________________________________________________________________

Odpovedet emailem