----- Original Message -----
> From: "Ron Pressler" <[email protected]>
> To: "Remi Forax" <[email protected]>
> Cc: "cay horstmann" <[email protected]>, "core-libs-dev" 
> <[email protected]>, "David Alayachew"
> <[email protected]>
> 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 <[email protected]> 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