diff --git a/tests/standalone/io/file_fuzz_test.dart b/tests/standalone/io/file_fuzz_test.dart
index f7f89c8..813a2bf 100644
--- a/tests/standalone/io/file_fuzz_test.dart
+++ b/tests/standalone/io/file_fuzz_test.dart
@@ -14,9 +14,10 @@
 import "package:async_helper/async_helper.dart";
 
 fuzzSyncMethods() {
+  var temp = Directory.systemTemp.createTempSync('dart_file_fuzz');
   typeMapping.forEach((k, v) {
     File? file;
-    doItSync(() => file = new File(v as String));
+    doItSync(() => file = new File('${temp.path}/${v as String}'));
     if (file == null) return;
     final f = file!;
     doItSync(f.existsSync);
@@ -36,14 +37,16 @@
       doItSync(() => f.readAsLinesSync(encoding: v2 as Encoding));
     });
   });
+  temp.deleteSync(recursive: true);
 }
 
 fuzzAsyncMethods() {
   asyncStart();
   var futures = <Future>[];
+  var temp = Directory.systemTemp.createTempSync('dart_file_fuzz');
   typeMapping.forEach((k, v) {
     File? file;
-    doItSync(() => file = new File(v as String));
+    doItSync(() => file = new File('${temp.path}/${v as String}'));
     if (file == null) return;
     final f = file!;
     futures.add(doItAsync(f.exists));
@@ -62,7 +65,10 @@
       futures.add(doItAsync(() => f.readAsLines(encoding: v2 as Encoding)));
     });
   });
-  Future.wait(futures).then((_) => asyncEnd());
+  Future.wait(futures).then((_) {
+    temp.deleteSync(recursive: true);
+    asyncEnd();
+  });
 }
 
 fuzzSyncRandomAccessMethods() {
diff --git a/tests/standalone_2/io/file_fuzz_test.dart b/tests/standalone_2/io/file_fuzz_test.dart
index 60a7e5b..95a704c 100644
--- a/tests/standalone_2/io/file_fuzz_test.dart
+++ b/tests/standalone_2/io/file_fuzz_test.dart
@@ -15,9 +15,10 @@
 import "package:async_helper/async_helper.dart";
 
 fuzzSyncMethods() {
+  var temp = Directory.systemTemp.createTempSync('dart_file_fuzz');
   typeMapping.forEach((k, v) {
     File f;
-    doItSync(() => f = new File(v));
+    doItSync(() => f = new File('${temp.path}/$v'));
     if (f == null) return;
     doItSync(f.existsSync);
     doItSync(f.createSync);
@@ -36,14 +37,16 @@
       doItSync(() => f.readAsLinesSync(encoding: v2));
     });
   });
+  temp.deleteSync(recursive: true);
 }
 
 fuzzAsyncMethods() {
   asyncStart();
   var futures = <Future>[];
+  var temp = Directory.systemTemp.createTempSync('dart_file_fuzz');
   typeMapping.forEach((k, v) {
     File f;
-    doItSync(() => f = new File(v));
+    doItSync(() => f = new File('${temp.path}/$v'));
     if (f == null) return;
     futures.add(doItAsync(f.exists));
     futures.add(doItAsync(f.delete));
@@ -61,7 +64,10 @@
       futures.add(doItAsync(() => f.readAsLines(encoding: v2)));
     });
   });
-  Future.wait(futures).then((_) => asyncEnd());
+  Future.wait(futures).then((_) {
+    temp.deleteSync(recursive: true);
+    asyncEnd();
+  });
 }
 
 fuzzSyncRandomAccessMethods() {
