JDK 10 RFR of 8182710: File.listRoots() always returns the root of CD drive
Roger Riggs
Roger.Riggs at Oracle.com
Thu Jun 29 13:58:04 UTC 2017
Pretty code; though the part about creating an array to create a BitSet
is a bit non-obvious.
But how much garbage does it create and extra runtime doing all that
fancy stuff.
Now if BitSet had a constructor from the bits in a long...
Roger
On 6/29/2017 3:25 AM, Langer, Christoph wrote:
> Looks good.
>
> Best regards
> Christoph
>
>> -----Original Message-----
>> From: core-libs-dev [mailto:core-libs-dev-bounces at openjdk.java.net] On
>> Behalf Of Brian Burkhalter
>> Sent: Mittwoch, 28. Juni 2017 19:49
>> To: core-libs-dev <core-libs-dev at openjdk.java.net>
>> Subject: Re: JDK 10 RFR of 8182710: File.listRoots() always returns the root of
>> CD drive
>>
>> I rather like that. How about this (without "ds")?
>>
>> public File[] listRoots() {
>> return BitSet
>> .valueOf(new long[] {listRoots0()})
>> .stream()
>> .mapToObj(i -> new File((char)('A' + i) + ":" + slash))
>> .filter(f -> access(f.getPath()) && f.exists())
>> .toArray(File[]::new);
>> }
>>
>> Thanks,
>>
>> Brian
>>
>> On Jun 27, 2017, at 10:54 PM, Tagir Valeev <amaembo at gmail.com> wrote:
>>
>>> Just an alternative which looks more readable to me (no explicit bit
>> twiddling):
>>> - int ds = listRoots0();
>>> - return IntStream
>>> - .range(0, 26)
>>> - .filter(i -> ((ds >> i) & 1) != 0)
>>> + long[] ds = {listRoots0()};
>>> + return BitSet
>>> + .valueOf(ds)
>>> + .stream()
>>>
>>> Probably a matter of taste though.
More information about the core-libs-dev
mailing list