You mentioned an interesting point there:

*If implementations actually follow that documentation, [...]*
>

I know that at least some libraries (f.e. "org.apache.commons.io") only 
stop reading when -1 is returned and will continue reading if 0 is returned.
That behaviour is definitely more friendly towards implementations that 
don't follow the java-doc exactly.

@ Alex Miller:
To cover both cases, maybe take the buffer-size into account when making 
the decision about whether or not to continue reading?
Something along those lines:

(or (pos? size)
    (and (= 0 size)
         (pos? buffer-size)))


Am Montag, 26. August 2019 07:01:01 UTC+2 schrieb Andy Fingerhut:
>
> Ah, I should have read further in the Java doc here, though, before 
> posting.  In particular, the last sentence of this paragraph: "If the 
> length of b is zero, then no bytes are read and 0 is returned; otherwise, 
> there is an attempt to read at least one byte. If no byte is available 
> because the stream is at the end of the file, the value -1 is returned; 
> otherwise, at least one byte is read and stored into b."
>
>
> https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html#read-byte:A-
>
> If implementations actually follow that documentation, then it appears 
> that a non-0 buffer size should never result in a return value of 0.
>
> Andy
>
> On Sun, Aug 25, 2019 at 9:54 PM Andy Fingerhut <andy.f...@gmail.com 
> <javascript:>> wrote:
>
>> That bit of Java-Doc says nothing about the behavior when providing a 
>> buffer b with a non-0 length.
>>
>> If it said: "If the length of b is non-zero, then the return value will 
>> never be 0", then I might agree with you.  Also, if you knew for some 
>> reason that the implementation guaranteed this.  (I have not looked at the 
>> implementation to know either way.)
>>
>> Andy
>>
>> On Sun, Aug 25, 2019 at 9:21 PM 'Dirk Wetzel' via Clojure <
>> clo...@googlegroups.com <javascript:>> wrote:
>>
>>> As alpeware already said, *.read* will not return [1024, 0, 1024, 201, 
>>> -1] because it will not return a zero unless *buffer-size* is zero.
>>> This bit of the Java-Doc: If the length of b is zero, then no bytes are 
>>> read and 0 is returned;
>>>
>>> So if the check is changed to (<= 0 size), passing a *buffer-size* of 0 
>>> (for whatever silly reason) would result in an infinite loop.
>>> While not my decision to make, I personally don't think that this would 
>>> be desirable behaviour.
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@googlegroups.com 
>>> <javascript:>
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clo...@googlegroups.com <javascript:>
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to clo...@googlegroups.com <javascript:>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/clojure/9deb8024-ce4b-4ef4-88d0-bbd817152ab6%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/clojure/9deb8024-ce4b-4ef4-88d0-bbd817152ab6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/c6674761-8e16-4cc7-8b46-ab18aa7911f2%40googlegroups.com.

Reply via email to