On 02/12/2014 05:36 PM, Henry Jen wrote:

On 02/12/2014 07:05 AM, Wang Weijun wrote:
This line does not compile

Files.list(Paths.get("/secret")).forEach(x -> Files.write(x, new byte[Files.size(x)]);

because Files.write() and Files.size() throw IOE. Then what's the best way to make it work?

(I find some old threads on this on lambda-dev. Maybe we have a recommended way now?)


I am not sure there is a "recommended" way. Depends on how you need to handle those exceptions, I'll put the lambda in a private function to take care those exception, and surpress them in a UncheckedIOException.

Cheers,
Henry

The other solution is to use wrappers like these ones:
https://github.com/forax/blog/blob/master/src/com/github/forax/blog/UnsafeIO.java

and rewrite your code like this:
Files.list(Paths.get("/secret")).forEach(unsafeProc(x -> Files.write(x, new byte[Files.size(x)]));

cheers,
Rémi

Reply via email to