----- Original Message -----
> From: "Ron Pressler" <ron.press...@oracle.com>
> To: "Remi Forax" <fo...@univ-mlv.fr>
> Cc: "cay horstmann" <cay.horstm...@gmail.com>, "core-libs-dev" 
> <core-libs-dev@openjdk.org>, "David Alayachew"
> <davidalayac...@gmail.com>
> Sent: Monday, April 14, 2025 11:46:25 PM
> Subject: Re: [External] : Re: My experience using Java to do CLI Scripting

>> On 14 Apr 2025, at 21:48, Remi Forax <fo...@univ-mlv.fr> wrote:
>> 
>> 
>> Hi Ron,
>> i think you need to close the inputReader
>> 
>>  public static String output(String... args) {
>>    ProcessBuilder processBuilder = new ProcessBuilder(args);
>>    try {
>>      Process process = processBuilder.start();
>>      try (BufferedReader reader = process.inputReader()) {
>>        return reader.lines().collect(Collectors.joining("\n"));
>>      }
>>    } catch (IOException e) {
>>      throw new IOError(e);
>>    }
>>  }
> 
> 
> When the process terminates, the InputStream underlying the pipe is closed
> (after being drained and the unread bytes served by a ByteArrayInputStream),
> which *I think* should be sufficient, but I could be wrong.

I more worried about the iterator used by lines() throwing an exception (IO or 
charset related) or joining() throwing an OOME because in that case the reader 
may not be closed.

> 
> — Ron

regards,
Rémi

Reply via email to