# DeleteFilesRule

Artifact: [androidx.test.ext:junit](https://developer.android.com/jetpack/androidx/releases/test-ext) [View Source](https://cs.android.com/search?q=file:androidx/test/ext/junit/rules/DeleteFilesRule.java+class:androidx.test.ext.junit.rules.DeleteFilesRule)

*** ** * ** ***


```
public final class DeleteFilesRule implements TestRule
```

<br />

*** ** * ** ***

Deletes files recursively in Android storage directories after each test.

This ensures that each test case has a clean slate in terms of the file system, such that files created in one test don't impact any other test.

Files that are present at the start of the test are not deleted at the end.

Directories that are impacted are

- `context.getApplicationInfo().dataDir`
- `https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()`
- `https://developer.android.com/reference/android/os/Environment.html#getDownloadCacheDirectory()`
- `https://developer.android.com/reference/android/content/Context.html#getExternalCacheDir()`
- `https://developer.android.com/reference/android/content/Context.html#getNoBackupFilesDir()` (Android 21+)
- `context.getApplicationInfo().deviceProtectedDataDir` (Android 24+)

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/test/ext/junit/rules/DeleteFilesRule#DeleteFilesRule()()` |

| ### Public methods |
|---|---|
| `https://junit.org/junit4/javadoc/latest/org/junit/runners/model/Statement.html` | `https://developer.android.com/reference/androidx/test/ext/junit/rules/DeleteFilesRule#apply(org.junit.runners.model.Statement,org.junit.runner.Description)(https://junit.org/junit4/javadoc/latest/org/junit/runners/model/Statement.html base, https://junit.org/junit4/javadoc/latest/org/junit/runner/Description.html description)` |

## Public constructors

### DeleteFilesRule

```
public DeleteFilesRule()
```

## Public methods

### apply

```
public Statement apply(Statement base, Description description)
```