从FTP下载时如何检查文件是否存在
我正在从 FTP 服务器下载,但我不知道如何检查文件是否已存在。我想要做的是从 FTP 服务器检索文件名,然后将其与文件夹中的所有文件进行比较。如果文件已存在,则它将下一个 FTP 文件名与文件夹中的所有文件进行比较,依此类推。 我已经进行了比较,如果文件夹中的所有文件与 FTP 服务器上的文件具有相同的名称,则它可以工作,但如果我添加一些旧文件,那么它会再次下载所有文件,但我不希望这样。
这是我的临时代码:
String[] names = client.listNames();
File folder = new File("c:\\test\\RTR_ZIP\\");
String[] filename = folder.list();
for (;i<names.length;i++) {
name = names[i];
exists=false;
if (name.contains(".zip")) {
if (filename.length == 0) {
new_file = new FileOutputStream("C:\\test\\RTR_ZIP\\" + name);
client.retrieveFile(name, new_file);
j++;
exists=true;
} else {
for (;k<filename.length;k++) {
name = names[i];
i++;
name1=filename[k];
// CHECK IF FILE EXISTS
if (!name.equals(name1)) {
new_file = new FileOutputStream("C:\\test\\RTR_ZIP\\" + name);
client.retrieveFile(name, new_file);
j++;
exists=true;
}
}
}//else
}//if contains .zip
}//for
提前致谢。
I'm downloading from FTP server and I don't know exactly how to check if file already exist. What I want to do is that I retrieve filname from FTP server and then compare it with all files in folder. If file already exists then it compares next FTP filename with all files in folder and so on.
I already did comparison and it's working if all files from folder have same name as files on FTP server but if I add some older file then it downloads all files once again and I don't want that.
Here is my scratch code:
String[] names = client.listNames();
File folder = new File("c:\\test\\RTR_ZIP\\");
String[] filename = folder.list();
for (;i<names.length;i++) {
name = names[i];
exists=false;
if (name.contains(".zip")) {
if (filename.length == 0) {
new_file = new FileOutputStream("C:\\test\\RTR_ZIP\\" + name);
client.retrieveFile(name, new_file);
j++;
exists=true;
} else {
for (;k<filename.length;k++) {
name = names[i];
i++;
name1=filename[k];
// CHECK IF FILE EXISTS
if (!name.equals(name1)) {
new_file = new FileOutputStream("C:\\test\\RTR_ZIP\\" + name);
client.retrieveFile(name, new_file);
j++;
exists=true;
}
}
}//else
}//if contains .zip
}//for
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的 ftp 服务器支持 XCRC 命令,则可以比较本地和远程文件的校验和 (CRC32)。
您可以迭代文件夹中的所有文件并将其 crc 与本地文件进行比较。
If your ftp server supports XCRC command it could be possible to compare checksum (CRC32) of local and remote file.
You could iterate all files in the folder and compare its crc with local one.
您应该使用 java.io.File.exists 和 java.io.File.isFile()|isDirectory() 检查是否存在。
You should check for existence using
java.io.File.exists
andjava.io.File.isFile()|isDirectory()
.也许这对有同样问题的人有用。我用这个方法制作了程序:
Maybe it will be useful to somebody with same problem. I made program by this method: