У меня есть массив File [] polFiles. Некоторые файлы могут быть удалены другой функцией, и я пишу функцию для очистки удаленных файлов из массива. Например, если в файлах [] polFiles были P0, P1, P2, P3, P4 и были удалены с помощью P1 и P2, теперь polFiles должен состоять из P0, P2 и P4. Как это сделать? Я написал простой код, но он бросает любые исключения и ошибки.Java - удалить некоторые файлы из файла [] array
int delcount = 0;
for (File file : files) {
if (!file.exists()) {
delcount++;
}
}
File[] newfiles = new File[files.length-delcount];
int fcount = 0;
for (int i = 0; i < newfiles.length; i++) {
if (!files[i].exists()) {
fcount++;
for (int j = i; j < files.length-fcount-1; j++) {
newfiles[j] = files[j+fcount];
}
} else {
newfiles[i] = files[i+fcount];
}
}
System.arraycopy(newfiles, 0, files, 0, newfiles.length);
for (int i = newfiles.length; i < files.length; i++) {
files[i] = null;
}
Где ошибка? Этот код генерирует исключение Null и не работает корректно. Он удаляет только первый файл из массива
Любая причина, по которой вы используете массив, а не 'Список'? – RealSkeptic
Если вы должны использовать массивы, вам нужно будет добавить восстановленные файлы в новый массив, а затем сжать его (в третий массив) ... – MadProgrammer
@RealSkeptic file array используется другой программой – Denis