|
代码不完整,如果有需要可以联系我。
public static void main(String[] args) {
setConfigFile("./src/config.properties");// 设置配置文件路径
connectServer();
uploadManyFile(ftpClient,new File("D:\\helloSite2\\"));
closeConnect();
}
//最主要是这个方法,它可以上传整个目录和目录里面的文件,但是还有点点的缺陷,比如你可以试下,你可以传个参数像我那样。你的helloSite2里面还有个site2(文件夹)、site2.txt、site3.txt、site4.txt这样可以了,而且在site2(文件夹)里面还有文件夹和文件里面的结构就随你自己想怎么恶搞就怎么恶搞了,它会遍历成功的。但是这里就出现了问题因为到了最后遍历完整个site2目录时候,它(指针changeToParentDirectory)只跳到了site2里面这个时候你的结果就是:site2.txt、site3.txt、site4.txt这些文件跑到了site2里面来了,本来是应该和site2并列的。这里就是问题所在根源了。我不知道到了最后如何能判断程序走到了site2的最后,所以就跳了一层目录,应该是跳2层目录的。所以请高手指点下。上述如果有问题可以联系我本人。
public static void uploadManyFile(FTPClient ftpClient,File localFilePath){
try{
File fileList[] = localFilePath.listFiles();
File initfileList[] = initLocalFilePath.listFiles();
int initfileListLength = initfileList.length;
for(int i=0;i<fileList.length;i++){
File upfile = (File)fileList;if(upfile.isDirectory()){ ftpClient.makeDirectory(upfile.getName()); ftpClient.changeWorkingDirectory(upfile.getName());
uploadManyFile(ftpClient,upfile,initLocalFilePath);
}else{
String localFileRealPath = localFilePath.getPath()+"\\"+upfile.getName();
uploadRealFile(ftpClient,new File(localFileRealPath));
if(i+1 == fileList.length){ ftpClient.changeToParentDirectory();
}
}
}
}catch(Exception e){
System.out.println("exception.....");
e.printStackTrace();
}
} |
|
|