使用Java和FTP,我通过在TimeStamp后面附加文件名来创建文件的备份,例如
File: a.html
Backup: a_Date_Time.html
但是现在当我创建以前的备份的备份时,我得到了
File: a_Date_Time.html
Backup: a_Date_Time_Date_Time.html
做到这一点的最佳方法是什么? 我也试图创建一个哈希表,其中原始文件为键,所有备份为FtpFileInfo类型列表
public HashMap<FtpFileInfo, List<FtpFileInfo>> viewFileMap(String directory) throws UnsupportedEncodingException {
List<FtpFileInfo> file = gate.list("./" + URLDecoder.decode(directory, "UTF-8") + "/");
fileMap = new HashMap<>();
for (int i=0;i<file.size();i++){
if(!file.get(i).isDirectory()){
String name = file.get(i).getFilename().substring(0,file.get(i).getFilename().lastIndexOf("."));
int length = name.length();
fileList = new ArrayList<>();
if(!name.matches("[\\w,\\s-]+_\\d{8}_\\d{6}")){
for(int j=i+1;j<file.size();j++){
if(!file.get(j).isDirectory() && file.get(j).getFilename().substring(0,file.get(j).getFilename().lastIndexOf(".")).matches("[\\w,\\s-]+_\\d{8}_\\d{6}")){
String vocd = file.get(j).getFilename();
String fileName = vocd.substring(0, vocd.lastIndexOf("_"));
String finalFileName = fileName.substring(0, fileName.lastIndexOf("_"));
String ss = vocd.substring(vocd.substring(0, vocd.lastIndexOf("_")).lastIndexOf("_") + 1);
String timeStamp = ss.substring(0,ss.lastIndexOf("."));
if(name.equals(finalFileName) && isTimeStampValid(timeStamp)){
fileList.add(file.get(j));
}
}
}
fileMap.put(file.get(i),fileList);
}
else {
continue;
}
}else {
fileMap.put(file.get(i),null);
}
}
return fileMap;
}
可以正常使用
a_Date_Time.html和a.html
类型的文件,但是当我创建备份的备份时,它不起作用,有没有办法创建这样的哈希图?