我写了一个连接到FTP服务器的java程序,并在服务器上显示当前工作目录的内容列表。代码如下:
public static void connect (){
ftp = new FTPClient();
FTPClientConfig config = new FTPClientConfig();
ftp.configure(config);
boolean error = false;
try {
ftp.connect(ftpConnect);
ftp.enterLocalPassiveMode();
ftp.login(ftpUsername, ftpPassword);
System.out.println("Connected to " + ftpConnect);
System.out.println("Server Reply Code: "+ftp.getReplyString());
getFileData();
ftp.disconnect();
} catch(IOException e) {
error = true;
e.printStackTrace();
} finally {
if(ftp.isConnected()) {
try {
ftp.disconnect();
} catch(IOException ioe) {
// do nothing
}
}
System.exit(error ? 1 : 0);
}
}
public static void getFileData(){
try {
fileFTP = ftp.listNames();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void downloadFTPFile(final String source, String newFileName) {
File checker = new File(source);
if(checker.exists()){
System.out.println("File \" "+source+"\" already exists. Canceling donwload...");
System.exit(1);
} else {
try (FileOutputStream fos = new FileOutputStream(newFileName)) {
System.out.println("Downloading "+source+". This might take a while...");
System.out.println("Go make yourself a cup of coffee. Or two...");
ftp.retrieveFile(source, fos);
System.out.println("Done!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException{
connect();
}
}
我有一个重定向类,它将所有Sysout操作打印到我的swing GUI中的TextArea。但是,当我在GUI中启动FTP连接时,GUI本身就会消失,就像它崩溃一样,但在我的控制台上,所有输出都显示正确,但不是重定向。通过GUI,我还有其他被调用的函数,比如一个unzipper,对于其他所有函数,GUI工作得很好,并在textArea中显示所有SysOut的东西。这是FTPClient之间的某种不兼容的东西吗?
欢呼声
答案 0 :(得分:1)
将此视为长评而非完整答案:
试着相信异常是你的朋友而不是敌人,而且几乎可以肯定你犯了错误而不是编译器:)。
你是否在没有GUI的情况下在控制台上运行程序?如果是这样的话,确切地追踪你所使用的软件包(有时不同版本的软件包可能会破坏你的程序。
打开相关的.jar文件,确保其中包含org.apache.commons.net.ftp
。
查看.jar文件版本。