< prev index next >

src/java.base/windows/classes/java/io/WinNTFileSystem.java

Print this page
rev 17392 : [mq]: 8182710.01
rev 17391 : 8182710: File.listRoots() always returns the root of CD drive
Summary: Include only logical drives with an extant filesystem location
Reviewed-by: XXX
rev 16471 : 8153250: java.io.File does not handle Windows paths of the form "D:" (no path) correctly
Summary: When resolving a child to a parent, do not insert a file separator for Windows directory-relative paths
Reviewed-by: rriggs
rev 16362 : 8148023: File.createTempFile is not adhering to the contract regarding file name lengths
Summary: Truncate the prefix, suffix, random characters per the specification
Reviewed-by: rriggs
rev 14359 : 8155775: Re-examine naming of privileged methods to access System properties
Reviewed-by: mullan
rev 14265 : 8154231: Simplify access to System properties from JDK code
Reviewed-by: rriggs, chegar, weijun
rev 12301 : 8077242: (str) Optimize AbstractStringBuilder.append(CharSequence, int, int) for String argument
Reviewed-by: martin
rev 10444 : 8054834: Modular Source Code
Reviewed-by: alanb, chegar, ihse, mduigou
Contributed-by: alan.bateman@oracle.com, alex.buckley@oracle.com, chris.hegarty@oracle.com, erik.joelsson@oracle.com, jonathan.gibbons@oracle.com, karen.kinnear@oracle.com, magnus.ihse.bursie@oracle.com, mandy.chung@oracle.com, mark.reinhold@oracle.com, paul.sandoz@oracle.com

*** 27,36 **** --- 27,37 ---- import java.io.File; import java.nio.file.Path; import java.util.Locale; import java.util.Properties; + import java.util.stream.IntStream; import sun.security.action.GetPropertyAction; /** * Unicode-aware FileSystem for Windows NT/2000. *
*** 585,610 **** /* -- Filesystem interface -- */ @Override public File[] listRoots() { int ds = listRoots0(); ! int n = 0; ! for (int i = 0; i < 26; i++) { ! if (((ds >> i) & 1) != 0) { ! if (!access((char)('A' + i) + ":" + slash)) ! ds &= ~(1 << i); ! else ! n++; ! } ! } ! File[] fs = new File[n]; ! int j = 0; ! char slash = this.slash; ! for (int i = 0; i < 26; i++) { ! if (((ds >> i) & 1) != 0) ! fs[j++] = new File((char)('A' + i) + ":" + slash); ! } return fs; } private static native int listRoots0(); --- 586,601 ---- /* -- Filesystem interface -- */ @Override public File[] listRoots() { int ds = listRoots0(); ! File[] fs = IntStream ! .range(0, 26) ! .filter(i -> ((ds >> i) & 1) != 0) ! .mapToObj(i -> new File((char)('A' + i) + ":" + slash)) ! .filter(f -> access(f.getPath()) && f.exists()) ! .toArray(File[]::new); return fs; } private static native int listRoots0();
< prev index next >