ECode IoUtils::DeleteContents( /* [in] */ IFile* dir) { VALIDATE_NOT_NULL(dir) AutoPtr<ArrayOf<IFile*> > files; dir->ListFiles((ArrayOf<IFile*>**)&files); Boolean result; if (files != NULL) { Boolean isDir; for (Int32 i = 0; i < files->GetLength(); ++i) { IFile* file = (*files)[i]; if (file->IsDirectory(&isDir), isDir) { DeleteContents(file); } file->Delete(&result); } } return NOERROR; }
Boolean FileUtils::DeleteOlderFiles( /* [in] */ IFile* dir, /* [in] */ Int32 minCount, /* [in] */ Int64 minAge) { if (minCount < 0 || minAge < 0) { // throw new IllegalArgumentException("Constraints must be positive or 0"); return FALSE; } AutoPtr<ArrayOf<IFile*> > files; dir->ListFiles((ArrayOf<IFile*>**)&files); if (files == NULL) return FALSE; // Sort with newest files first AutoPtr<IComparator> cmp = new FileComparator(); Arrays::Sort(files.Get(), cmp.Get()); AutoPtr<ISystem> system; CSystem::AcquireSingleton((ISystem**)&system); // Keep at least minCount files Boolean deleted = FALSE, bval; Int64 age, lastModified; for (Int32 i = minCount; i < files->GetLength(); i++) { IFile* file = (*files)[i]; // Keep files newer than minAge system->GetCurrentTimeMillis(&age); file->GetLastModified(&lastModified); age -= lastModified; if (age > minAge) { if (file->Delete(&bval), bval) { // Logger::D(TAG, "Deleted old file %s", file); deleted = true; } } } return deleted; }
Boolean FileUtils::DeleteContents( /* [in] */ IFile* dir) { AutoPtr<ArrayOf<IFile*> > files; dir->ListFiles((ArrayOf<IFile*>**)&files); Boolean success = TRUE; if (files != NULL) { Boolean bval; for (Int32 i = 0; i < files->GetLength(); ++i) { IFile* file = (*files)[i]; if (file->IsDirectory(&bval), bval) { success &= DeleteContents(file); } if (file->Delete(&bval), !bval) { //Log.w(TAG, "Failed to delete " + file); success = FALSE; } } } return success; }