bpo-40924: Ensure importlib.resources.path returns an extant path (GH-20857)

diff --git a/Lib/importlib/readers.py b/Lib/importlib/readers.py
index fb49ebe..6331e4d 100644
--- a/Lib/importlib/readers.py
+++ b/Lib/importlib/readers.py
@@ -7,11 +7,19 @@
     def __init__(self, loader):
         self.path = pathlib.Path(loader.path).parent
 
+    def resource_path(self, resource):
+        """
+        Return the file system path to prevent
+        `resources.path()` from creating a temporary
+        copy.
+        """
+        return str(self.path.joinpath(resource))
+
     def files(self):
         return self.path
 
 
-class ZipReader(FileReader):
+class ZipReader(abc.TraversableResources):
     def __init__(self, loader, module):
         _, _, name = module.rpartition('.')
         prefix = loader.prefix.replace('\\', '/') + name + '/'
@@ -28,3 +36,6 @@
         # for non-existent paths.
         target = self.files().joinpath(path)
         return target.is_file() and target.exists()
+
+    def files(self):
+        return self.path