Groovy удалить элемент массива - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть эта задача, чтобы получить zip-контент и поместить его в другой zip-архив. Из src zip я хочу взять все в каталоге 'r' и скопировать его в целевой zip-каталог 'x / y / z'.
Код работает, но мне интересно, может ли он быть более элегантным.

    from( zipTree("a.zip") ) {
        include "r/**"
        includeEmptyDirs = false
        into "x/y/z"
        eachFile { fcd ->
            def segs1 = [fcd.relativePath.segments].flatten().findAll { it2 -> it2 != null };
            segs1.removeAt(3)
            fcd.relativePath = new RelativePath(true, segs1.toArray(new String[0]))
        }
    }

Проблема, с которой я столкнулся, заключается в том, что fcd.relativePath.segments - это String [], где я хочу удалить элемент с индексом 3.
Здесь я конвертирую в список и обратно в массив, бррр.

Идеи

Frank

1 Ответ

1 голос
/ 01 апреля 2019

заводной на основе Java

и в Java:

Массив - это контейнерный объект, который содержит фиксированное количество значений одного типа. Длина массива устанавливается при его создании. После создания его длина фиксирована.

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

Таким образом, вы можете преобразовать его в список, изменить размер, а затем преобразовать обратно в массив

или создайте новый массив с новым размером и скопируйте в него необходимые элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...