6

数週間後にユーザーが気にしない画像をアプリにダウンロードしています。アプリにダウンロードするので、起動するたびにダウンロードする必要はありません。問題は、Documents フォルダーが必要以上に大きくなりたくないということです。そのため、1 か月以上前のファイルを「クリーンアップ」できると考えました。

問題は、1 か月以上経過しているが削除したくないファイルがいくつかあることです。それらは静的な名前付きファイルになるため、簡単に識別でき、3 つまたは 4 つしかありません。削除したい古いファイルが数十あるかもしれませんが。例を次に示します。

picture.jpg           <--Older than a month DELETE
picture2.jpg          <--NOT older than a month Do Not Delete
picture3.jpg          <--Older than a month DELETE
picture4.jpg          <--Older than a month DELETE
keepAtAllTimes.jpg    <--Do not delete no matter how old
keepAtAllTimes2.jpg   <--Do not delete no matter how old
keepAtAllTimes3.jpg   <--Do not delete no matter how old

これらのファイルを選択的に削除するにはどうすればよいですか?

前もって感謝します!

4

6 に答える 6

14

2 日以上経過したファイルを削除するコード。もともと私はここで答えました。私はそれをテストし、それは私のプロジェクトで働いていました。

PSドキュメントディレクトリ内のすべてのファイルを削除する前に注意してください。削除すると、アプリケーションに問題が発生する可能性があるデータベースファイル(使用している場合..!!)が失われる可能性があります。そのため、if 条件を保持しています。:-))

// Code to delete images older than two days.
   #define kDOCSFOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]

NSFileManager* fileManager = [[[NSFileManager alloc] init] autorelease];
NSDirectoryEnumerator* en = [fileManager enumeratorAtPath:kDOCSFOLDER];    

NSString* file;
while (file = [en nextObject])
{
    NSLog(@"File To Delete : %@",file);
    NSError *error= nil;

    NSString *filepath=[NSString stringWithFormat:[kDOCSFOLDER stringByAppendingString:@"/%@"],file];


    NSDate   *creationDate =[[fileManager attributesOfItemAtPath:filepath error:nil] fileCreationDate];
    NSDate *d =[[NSDate date] dateByAddingTimeInterval:-1*24*60*60];

    NSDateFormatter *df=[[NSDateFormatter alloc]init];// = [NSDateFormatter initWithDateFormat:@"yyyy-MM-dd"];
    [df setDateFormat:@"EEEE d"]; 

    NSString *createdDate = [df stringFromDate:creationDate];

     NSString *twoDaysOld = [df stringFromDate:d];

    NSLog(@"create Date----->%@, two days before date ----> %@", createdDate, twoDaysOld);

    // if ([[dictAtt valueForKey:NSFileCreationDate] compare:d] == NSOrderedAscending)
    if ([creationDate compare:d] == NSOrderedAscending)

    {
        if([file isEqualToString:@"RDRProject.sqlite"])
        {

            NSLog(@"Imp Do not delete");
        }

        else
        {
             [[NSFileManager defaultManager] removeItemAtPath:[kDOCSFOLDER stringByAppendingPathComponent:file] error:&error];
        }
    }
}
于 2012-04-12T19:07:26.233 に答える
0

ファイルの作成日を見つけるには、非常に便利なStackOverflowの投稿を参照してください。

iOS:ファイルの作成日をどのように見つけますか?

この投稿を参照してください。これはそれらを削除するのに役立つ場合があります。ドキュメントディレクトリからこれらのデータを削除するために何をする必要があるかについて、大まかなアイデアを得ることができます。

2日以上経過したiPhoneのドキュメントディレクトリからファイルを削除する方法

これがお役に立てば幸いです。

于 2012-04-12T18:59:54.167 に答える