diff --git a/packages/file/CHANGELOG.md b/packages/file/CHANGELOG.md
index d44e91a..6b4f893 100644
--- a/packages/file/CHANGELOG.md
+++ b/packages/file/CHANGELOG.md
@@ -1,3 +1,8 @@
+#### 5.2.1
+
+* systemTemp directories created by `MemoryFileSystem` will allot names
+  based on the file system instance instead of globally.
+
 #### 5.2.0
 
 * Added a `MemoryRandomAccessFile` class and implemented
diff --git a/packages/file/lib/src/backends/memory/memory_directory.dart b/packages/file/lib/src/backends/memory/memory_directory.dart
index 0bb266e..4e2bbd3 100644
--- a/packages/file/lib/src/backends/memory/memory_directory.dart
+++ b/packages/file/lib/src/backends/memory/memory_directory.dart
@@ -17,6 +17,10 @@
 import 'style.dart';
 import 'utils.dart' as utils;
 
+// Tracks a unique name for system temp directories, per filesystem
+// instance.
+final Expando<int> _systemTempCounter = Expando<int>();
+
 /// Internal implementation of [Directory].
 class MemoryDirectory extends MemoryFileSystemEntity
     with common.DirectoryAddOnsMixin
@@ -25,8 +29,6 @@
   MemoryDirectory(NodeBasedFileSystem fileSystem, String path)
       : super(fileSystem, path);
 
-  static int _tempCounter = 0;
-
   @override
   io.FileSystemEntityType get expectedType => io.FileSystemEntityType.directory;
 
@@ -75,10 +77,12 @@
     DirectoryNode node = fileSystem.findNode(dirname);
     checkExists(node, () => dirname);
     utils.checkIsDir(node, () => dirname);
+    int _tempCounter = _systemTempCounter[fileSystem] ?? 0;
     String name() => '$basename$_tempCounter';
     while (node.children.containsKey(name())) {
       _tempCounter++;
     }
+    _systemTempCounter[fileSystem] = _tempCounter;
     DirectoryNode tempDir = DirectoryNode(node);
     node.children[name()] = tempDir;
     return MemoryDirectory(fileSystem, fileSystem.path.join(dirname, name()));
diff --git a/packages/file/pubspec.yaml b/packages/file/pubspec.yaml
index 77a45d7..d90f8eb 100644
--- a/packages/file/pubspec.yaml
+++ b/packages/file/pubspec.yaml
@@ -1,5 +1,5 @@
 name: file
-version: 5.2.0
+version: 5.2.1
 authors:
 - Matan Lurey <matanl@google.com>
 - Yegor Jbanov <yjbanov@google.com>
diff --git a/packages/file/test/memory_test.dart b/packages/file/test/memory_test.dart
index 3433ac7..42be7b1 100644
--- a/packages/file/test/memory_test.dart
+++ b/packages/file/test/memory_test.dart
@@ -110,4 +110,25 @@
       raf.closeSync();
     }
   });
+
+  test('MemoryFileSystem.systemTempDirectory test', () {
+    final MemoryFileSystem fs = MemoryFileSystem.test();
+
+    final io.Directory fooA = fs.systemTempDirectory.createTempSync('foo');
+    final io.Directory fooB = fs.systemTempDirectory.createTempSync('foo');
+
+    expect(fooA.path, '/.tmp_rand0/foorand0');
+    expect(fooB.path, '/.tmp_rand0/foorand1');
+
+    final MemoryFileSystem secondFs = MemoryFileSystem.test();
+
+    final io.Directory fooAA =
+        secondFs.systemTempDirectory.createTempSync('foo');
+    final io.Directory fooBB =
+        secondFs.systemTempDirectory.createTempSync('foo');
+
+    // Names are recycled with a new instance
+    expect(fooAA.path, '/.tmp_rand0/foorand0');
+    expect(fooBB.path, '/.tmp_rand0/foorand1');
+  });
 }
