示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
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;
}