Hi Alan,

Where would you suggest to put such methods though? Should we aim for a 
„IOUitls" class holding such methods in the first place and eventually place 
some simple convenience methods on Input-/OutputStream and Reader/Writer?

I personally would do both, because I think it would make the usage more fluid 
from the usage perspective coming from a InputStream/Reader. 

Having said that, this leads me to the question: 

Are some other use cases where it would be good to have some sort of a callback 
in form of a function reference being called to notify about the amount of 
bytes/chars read and written to the target. This to have a hook for cases where 
we want to show either some sort of a progress or secondly sum of the total 
amount of transferred data. 

Also I think there should be may some possibility to stop the copy job on a 
„feedback“ event as follows:

while ((read=input.read(buffer)>-1 && proceedCheck.read(read)) {
output.write(buffer, 0, read);
}

Where proceedCheck would be a functional interface similar to the IntConsumer 
or LongConsumer but with a boolean return type signaling to keep on copying or 
terminate. (or there is a better approach using other functional interfaces, I 
missed so far)

Other opinions / input? I would be glad to help improve the library in this 
direction to finally get rid of lots of duplicated code copying data… 

Cheers Patrick


> Am 13.11.2014 um 20:59 schrieb Alan Bateman <alan.bate...@oracle.com>:
> 
> On 13/11/2014 19:31, Patrick Reinhart wrote:
>> Hi there,
>> 
>> In the followup of a BOF with Stephen Colebourne with his ideas of small 
>> library changes that may could get in JDK9. As of the fact that in the 
>> codebase of my company there are several locations where we copy from/to IO 
>> stream over and over again using either external libraries or do it by 
>> ourselves,  I suggested to have some support for easy coping data between 
>> Input-/OutputStream or Reader/Writer without having to use to external 
>> libraries.
>> 
> Long overdue. I remember we prototyped methods like this (and much more) 
> during JDK 7 but didn't do enough at the time to actually get them in. We did 
> include a bunch of easy to use methods in the Files class at the time, 
> including copy between input/output streams and files, but we didn't 
> introduce an IOUtils or such class in java.io.
> 
> -Alan
> 

Reply via email to