try-with-resources on arbitrary multiple files?
Paul Sandoz
paul.sandoz at oracle.com
Tue Apr 22 08:47:23 UTC 2014
On Apr 22, 2014, at 3:18 AM, Wang Weijun <weijun.wang at oracle.com> wrote:
> If I copy a file to another I can
>
> try (src = open(ifile); dest = open(ofile)) {
> while (!src.EOF) dest.write(src.read());
> }
>
> but what if there are multiple destinations? Is there something like
>
Not that i am aware of.
A fun little trick you can do is the following:
File ifile = null;
List<OutputStream> dests = new ArrayList<>();
try (InputStream src = open(ifile); AutoCloseable ac = () -> closeAll(dests)) {
dests.add(...);
....
}
static void closeAll(Collection<? extends OutputStream> l) throws IOException {
...
}
But still that does not avoid the main work of closing stuff.
Paul.
> try (src = open(ifile); manager = new CloseableManager()) {
> for (ofile: ofiles) {
> manager.register(open(ofile));
> }
> while (!src.EOF) {
> buffer = src.read();
> for (dest: manager) dest.write(buffer);
> }
> }
>
> Thanks
> Max
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20140422/23b1aa23/signature.asc>
More information about the compiler-dev
mailing list