Эта программа направлена на создание компонента с графическим интерфейсом, который отображает объем общего пространства, доступное пространство и процент от общего объема доступного пространства:
package com.java24hours;
import java.io.IOException;
import java.nio.file.*;
import javax.swing.*;
public class FreeSpacePanel extends JPanel {
JLabel spaceLabel = new JLabel("Disk space: ");
JLabel space = new JLabel();
public FreeSpacePanel() {
super();
add(spaceLabel);
add(space);
try {
setValue();
} catch (IOException ioe) {
space.setText("Error");
}
}
private final void setValue() throws IOException {
// get the current file storage pool
Path current = Paths.get("");
FileStore store = Files.getFileStore(current);
// find the free storage space
long totalSpace = store.getTotalSpace();
long freeSpace = store.getUsableSpace();
// get this as a percentage (with two digits)
double percent = (double)freeSpace / (double)totalSpace * 100;
percent = (int)(percent * 100) / (double)100;
// set the label's text
space.setText(freeSpace + " free out of " + totalSpace + " ("
+ percent + "%)");
}
}
Вы можете увидеть, как создается объект FileStore с именем 'store', затем в следующих строках методы FileStore getTotalSpace()
и getUseableSpace()
вызываются напрямую без реализации.Однако класс FileStore объявляет эти методы абстрактными, так как это возможно?