Не могу добавить массив в список

281
29 апреля 2018, 22:50

Files.java:

package package1.com;
public class Files {
    private String nameFiles;
    private int sizeFiles;
    public Files(String nameFiles,int sizeFiles){
        this.nameFiles = nameFiles;
        this.sizeFiles = sizeFiles;
    }
    public void setSizeFiles(int sizeFiles) {
        this.sizeFiles = sizeFiles;
    }
    public void setNameFiles(String nameFiles) {
        this.nameFiles = nameFiles;
    }
    public int getSizeFiles() {
        return sizeFiles;
    }
    public String getNameFiles() {
        return nameFiles;
    }
}

Directory.java:

package package1.com;
public class Directory {
    private String nameDir;
    private Files[] arrayFile;
    private Directory nextDir;
    private int count;
    private int curentSize;
    public Directory() {}
    public Directory(String nameDir, Directory nextDir, int curentSize) {
        this.nameDir = nameDir;
        this.nextDir = nextDir;
        this.curentSize = curentSize;
        arrayFile = new Files[this.curentSize];
    }
    public String getNameDir() {
        return nameDir;
    }
    public void setNameDir(String nameDir) {
        this.nameDir = nameDir;
    }
    public Directory getNextDir() {
        return nextDir;
    }
    public void setNextDir(Directory nextDir) {
        this.nextDir = nextDir;
    }

    public void addFile(String name, int size) {
        if (count == arrayFile.length - 1) {
            resize(arrayFile.length * 2);
        }
        arrayFile[count] = new Files(name, size);
        count++;
    }
    private void resize(int newLength) {
        Files[] newArrayFiles = new Files[newLength];
        System.arraycopy(arrayFile, 0, newArrayFiles, 0, count);
        arrayFile = newArrayFiles;
    }
    public boolean deleteFile() {//проверка булеан
        if (count != 0) {
            for (int i = 0; i < count; i++) {
                arrayFile[i] = arrayFile[i + 1];
            }
        } else { return false; }
        count--;
        return true;
    }
    public void display() {
        for (int i = 0; i < count; i++) {
            System.out.print("Имя файла :" + arrayFile[i].getNameFiles() + " " + "Размер файла: " + arrayFile[i].getSizeFiles());
            System.out.println();
        }
        System.out.print("Кол-во элементов: " + count + " " + "Длина массива: " + arrayFile.length);
        System.out.println();
    }
}

Device.java:

package package1.com;
public class Device {
    private Directory firstDir;
    public Device() {
        firstDir = null;
    }
    public Directory getFirstDir() {
        return firstDir;
    }
    public void setFirstDir(Directory firstDir) {
        this.firstDir = firstDir;
    }
    public boolean createDirect(String nameDir, int currentSize, String afterName) {  // afterName имя после которго добавить
        Directory directory = new Directory(nameDir, firstDir, currentSize);
        Directory current = firstDir;
        if (firstDir == null) {
            directory.setNextDir(firstDir);
            firstDir = directory;
        } else {
            while (current.getNameDir() != afterName) {
                if (current.getNextDir() == null) {
                    break;
                } else {
                    current = current.getNextDir();
                }
            }
            directory.setNextDir(current.getNextDir());
            current.setNextDir(directory);
        }
        return true;
    }
    public boolean searchDirect(String nameDirect) {
        Directory current = firstDir;
        while (current.getNameDir() != nameDirect) {
            if (current.getNextDir() == null) {
                return false;
            } else current = current.getNextDir();
        }
        return true;
    }
    public boolean deleteDirect(String nameDirect) {
        Directory current = firstDir;
        Directory previous = firstDir;
        if (firstDir != null) {
            while (current.getNameDir() != nameDirect) {  // условие на пустоту 1
                if (current.getNextDir() == null) {
                    return false;
                } else {
                    previous = current;
                    current = current.getNextDir();
                }
            }
            if (current == firstDir) {  // условие первый или нет 2
                firstDir = firstDir.getNextDir();
            } else {
                previous.setNextDir(current.getNextDir());
            }
        } else {
            return false;
        }
        return true;
    }
//    public boolean saveProject(String name){}
//    public boolean openProject(String name)
    public void showDir() {
        Directory current = firstDir;
        while (current != null) {
//            current.display();
            System.out.print(current.getNameDir() + " ");
            current = current.getNextDir();
        }
    }
}

Test.Java:

    package package1.com;

public class TestClass {
    public static void main(String[] args) {
        Device device1 = new Device();
        device1.createDirect("Dir1",10," ");
        device1.createDirect("Dir2",5," ");
        device1.createDirect("Dir3",6," ");
        device1.createDirect("Dir4",7," ");
        device1.showDir();

    }

Вывод:

Dir1 Dir2 Dir3 Dir4 

У меня есть три класса, демонстрирующие файловую структуру внешней памяти. Файлы в каталоге должны объединяться в очередь на основе дин. массива, а каталоги в список. Суть в том,что я могу создать список каталогов, а как вот в каждый каталог добавить массив файлов не знаю. Подскажите. Заранее спасибо.

Answer 1

Для этого вам надо изменить метод, чтобы он возвращал Directory которую вы добавили.

public Directory createDirect(String nameDir, int currentSize, String afterName) {  // afterName имя после которго добавить
    Directory directory = new Directory(nameDir, firstDir, currentSize);
    Directory current = firstDir;
    if (firstDir == null) {
        directory.setNextDir(firstDir);
        firstDir = directory;
    } else {
        while (current.getNameDir() != afterName) {
            if (current.getNextDir() == null) {
                break;
            } else {
                current = current.getNextDir();
            }
        }
        directory.setNextDir(current.getNextDir());
        current.setNextDir(directory);
    }
    return directory;
}

тогда ва можете добавлять в нее файлы

    Device device1 = new Device();
    Directory dir = device1.createDirect("Dir1",10," ");
    dir.addFile("File1", 10);
    dir.addFile("File2", 10); 
    dir.addFile("File3", 10); 
READ ALSO
JUnit тестирование

JUnit тестирование

Когда при JUnit тестировании целесообразно создавать методы setUp и tearDown?

185
Как активировать проверку на роли в spring mvc + spring boot + spring security

Как активировать проверку на роли в spring mvc + spring boot + spring security

Нужно заблокировать доступ к некоторым роутам в зависимости от ролиПересмотрел около 5-7 гайдов по Spring MVC Security, роуты blog/{id}, blog/new должны быть...

182
Проблемы с подключением к MySql 8, через Intellij Idea

Проблемы с подключением к MySql 8, через Intellij Idea

После обновления jdbc драйвера в Intellij Idea, выскакивает такая ошибка:

162
Как получить ответ из броадкаста??

Как получить ответ из броадкаста??

Работаю с блютузомПрежде чем получить список доступных устрйств проверяю на то что включен ли блютуз

166