我需要快速脚本(在 Android 中),它会在电话目录中返回丢失/过时的文件。这是我的代码,但速度很慢。这就像循环中的循环,这就是为什么它很慢。有更好的想法吗?
public List<String> _GetMissingFiles()
{
int checked_files = 0;
List<String> _Local_Files = getLocalFiles(new File(Config._SDCARD_DIR), null);
List<String> _FTP_Files = getFTPfiles();
List<String> _Files_Need = new ArrayList<String>();
try{
for(int i = 0; i < + _FTP_Files.size(); i++){
boolean found = false;
double progress = (Double.valueOf(checked_files) / Double.valueOf(_FTP_Files.size()));
String[] _FTP_File_st = strTok(_FTP_Files.get(i), ";");
String _FTP_File = _FTP_File_st[0];
Date _FTP_File_date = new SimpleDateFormat("yyyy-MM-dd").parse(_FTP_File_st[1]);
FTP_SyncThread.doProgress("*"+_FTP_File);
FTP_SyncThread.doProgress("^"+(_FTP_Files.size() - checked_files));
FTP_SyncThread.doProgress("["+progress);
Log.d("FTP","checked: "+checked_files+ " max: "+_FTP_Files.size());
for(int x = 0; x < + _Local_Files.size(); x++){
String[] _Local_File_st = strTok(_Local_Files.get(x), ";");
String _Local_File = _Local_File_st[0];
Date _Local_File_date = new SimpleDateFormat("yyyy-MM-dd").parse(_Local_File_st[1]);
if(_FTP_File.equals(_Local_File)) //Found file, now check date
{
if(_FTP_File_date.compareTo(_Local_File_date) <= 0)
{
//DATE OK
found = true;
//Log.i("FTP","[OK]: File Found: "+_FTP_File);
break;
}
}
}
checked_files += 1;
if(!found)
{
//Log.w("FTP","[ERR]: File Not Found or outdated: "+_FTP_File);
_Files_Need.add(_FTP_File);
}
}
}
catch (ParseException e) {
Log.e("FTP","Catch error: "+e.getMessage());
}
return _Files_Need;
}