Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Вы могли полагаться на wget, который обычно обрабатывает ftp, добираются правильно (по крайней мере, в моем собственном опыте). Например:
wget -r ftp://user:pass@server.com/
можно также использовать -m
, который подходит для зеркального отражения. Это в настоящее время эквивалентно -r -N -l inf
.
, Если у Вас есть некоторые специальные символы в учетных деталях, можно определить --user
и --password
аргументы, чтобы заставить его работать. Пример с пользовательским входом в систему с определенными символами:
wget -r --user="user@login" --password="Pa$wo|^D" ftp://server.com/
РЕДАКТИРОВАНИЕ , Как указано @asmaier, предостерегитесь это, даже если -r
для рекурсии, это имеет макс. уровень по умолчанию 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
, Если Вы не хотите пропускать subdirs, лучше используйте опцию зеркального отражения, -m
:
-m --mirror Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing.
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
Если можно использовать scp
вместо ftp
, -r
, опция сделает это для Вас. Я проверил бы, чтобы видеть, можно ли использовать более современный механизм передачи файлов, чем FTP.
Используйте WGet вместо этого. Это поддерживает протоколы FTP и HTTP.
wget -r ftp://mydomain.com/mystuff
Удачи!
ссылка: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
Существует 'ncftp', который доступен для установки в Linux. Это работает над протоколом FTP и может использоваться для загрузки файлов и папок рекурсивно. работы над Linux. Использовался и хорошо работает для рекурсивной папки/передачи файлов.
Проверка эта ссылка... http://www.ncftp.com/
Если Вы можете, я убедительно предполагать Вас tar
и bzip
(или gzip
, безотносительно плаваний Ваша лодка) каталог на удаленном machine— для каталога какого-либо значительного размера, сбережения пропускной способности будут, вероятно, стоить времени для архивированного/разархивированного.
Если Вы хотите придерживаться FTP командной строки, необходимо попробовать NcFTP. Тогда можно использовать, заставляют-R рекурсивно получать папку. Вы также получите завершение.
wget -r ftp://url
Отлично работает на Redhat и Ubuntu