diff --git a/tests/src/com/android/providers/downloads/FsHelper.java b/tests/src/com/android/providers/downloads/FsHelper.java
new file mode 100644
index 0000000..d83827c
--- /dev/null
+++ b/tests/src/com/android/providers/downloads/FsHelper.java
@@ -0,0 +1,24 @@
+package com.android.providers.downloads;
+
+import java.io.File;
+
+public class FsHelper {
+
+    /**
+     * Deletes all files under a given directory. Deliberately ignores errors, on the assumption
+     * that test cleanup is only supposed to be best-effort.
+     *
+     * @param directory directory to clear its contents
+     */
+    public static void deleteContents(File directory) {
+        File[] files = directory.listFiles();
+        if (files != null) {
+            for (File file : files) {
+                if (file.isDirectory()) {
+                    deleteContents(file);
+                }
+                file.delete();
+            }
+        }
+    }
+}
diff --git a/tests/src/com/android/providers/downloads/HelpersTest.java b/tests/src/com/android/providers/downloads/HelpersTest.java
index 61515ce..08c0b13 100644
--- a/tests/src/com/android/providers/downloads/HelpersTest.java
+++ b/tests/src/com/android/providers/downloads/HelpersTest.java
@@ -79,8 +79,8 @@
     @Override
     protected void tearDown() throws Exception {
         mMockitoHelper.tearDown();
-        IoUtils.deleteContents(getContext().getFilesDir());
-        IoUtils.deleteContents(getContext().getCacheDir());
+        FsHelper.deleteContents(getContext().getFilesDir());
+        FsHelper.deleteContents(getContext().getCacheDir());
 
         super.tearDown();
     }
diff --git a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
index 3ec3940..f45e102 100644
--- a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
@@ -54,8 +54,6 @@
 
 import androidx.test.filters.FlakyTest;
 
-import libcore.io.IoUtils;
-
 import com.google.mockwebserver.MockResponse;
 import com.google.mockwebserver.RecordedRequest;
 import com.google.mockwebserver.SocketPolicy;
@@ -93,7 +91,7 @@
                 Environment.DIRECTORY_DOWNLOADS)
                 + File.separator + "download_manager_functional_test");
         if (mTestDirectory.exists()) {
-            IoUtils.deleteContents(mTestDirectory);
+            FsHelper.deleteContents(mTestDirectory);
         } else {
             mTestDirectory.mkdir();
         }
@@ -102,7 +100,7 @@
     @Override
     protected void tearDown() throws Exception {
         if (mTestDirectory != null && mTestDirectory.exists()) {
-            IoUtils.deleteContents(mTestDirectory);
+            FsHelper.deleteContents(mTestDirectory);
             mTestDirectory.delete();
         }
         super.tearDown();
