< prev index next >
src/java.base/windows/classes/sun/nio/fs/WindowsFileStore.java
Print this page
@@ -123,32 +123,46 @@
public boolean isReadOnly() {
return ((volInfo.flags() & FILE_READ_ONLY_VOLUME) != 0);
}
// read the free space info
- private DiskFreeSpace readDiskFreeSpace() throws IOException {
+ private DiskFreeSpace readDiskFreeSpaceEx() throws IOException {
try {
return GetDiskFreeSpaceEx(root);
} catch (WindowsException x) {
x.rethrowAsIOException(root);
return null;
}
}
+ private DiskFreeSpace readDiskFreeSpace() throws IOException {
+ try {
+ return GetDiskFreeSpace(root);
+ } catch (WindowsException x) {
+ x.rethrowAsIOException(root);
+ return null;
+ }
+ }
+
@Override
public long getTotalSpace() throws IOException {
- return readDiskFreeSpace().totalNumberOfBytes();
+ return readDiskFreeSpaceEx().totalNumberOfBytes();
}
@Override
public long getUsableSpace() throws IOException {
- return readDiskFreeSpace().freeBytesAvailable();
+ return readDiskFreeSpaceEx().freeBytesAvailable();
+ }
+
+ @Override
+ public int getBlockSize() throws IOException {
+ return (int)readDiskFreeSpace().bytesPerSector();
}
@Override
public long getUnallocatedSpace() throws IOException {
- return readDiskFreeSpace().freeBytesAvailable();
+ return readDiskFreeSpaceEx().freeBytesAvailable();
}
@Override
public <V extends FileStoreAttributeView> V getFileStoreAttributeView(Class<V> type) {
if (type == null)
@@ -163,10 +177,12 @@
return getTotalSpace();
if (attribute.equals("usableSpace"))
return getUsableSpace();
if (attribute.equals("unallocatedSpace"))
return getUnallocatedSpace();
+ if (attribute.equals("bytesPerSector"))
+ return getBlockSize();
// windows specific for testing purposes
if (attribute.equals("volume:vsn"))
return volInfo.volumeSerialNumber();
if (attribute.equals("volume:isRemovable"))
return volType == DRIVE_REMOVABLE;
< prev index next >