diff --git a/Directory.cxx b/Directory.cxx
index 872838b0744f457ecc25a0850cf67aa038f42d7b..a013c3e750ddd228b8c0298bdce235991d199555 100644
--- a/Directory.cxx
+++ b/Directory.cxx
@@ -55,13 +55,13 @@ Directory::~Directory()
 }
 
 //----------------------------------------------------------------------------
-unsigned long Directory::GetNumberOfFiles()
+unsigned long Directory::GetNumberOfFiles() const
 {
   return static_cast<unsigned long>(this->Internal->Files.size());
 }
 
 //----------------------------------------------------------------------------
-const char* Directory::GetFile(unsigned long dindex)
+const char* Directory::GetFile(unsigned long dindex) const
 {
   if ( dindex >= this->Internal->Files.size() )
     {
@@ -70,6 +70,12 @@ const char* Directory::GetFile(unsigned long dindex)
   return this->Internal->Files[dindex].c_str();
 }
 
+//----------------------------------------------------------------------------
+const char* Directory::GetPath() const
+{
+  return this->Internal->Path.c_str();
+}
+
 } // namespace KWSYS_NAMESPACE
 
 // First microsoft compilers
diff --git a/Directory.hxx.in b/Directory.hxx.in
index dd271272aac738ba8c0ed0cd8addcf0b4e25a6b5..63791ad185a85f0aef062cd8fee884943d9d5a57 100644
--- a/Directory.hxx.in
+++ b/Directory.hxx.in
@@ -45,13 +45,18 @@ public:
   /**
    * Return the number of files in the current directory.
    */
-  unsigned long GetNumberOfFiles();
+  unsigned long GetNumberOfFiles() const;
   
   /**
    * Return the file at the given index, the indexing is 0 based
    */
-  const char* GetFile(unsigned long);
-  
+  const char* GetFile(unsigned long) const;
+
+  /**
+   * Return the path to Open'ed directory
+   */
+  const char* GetPath() const;
+
 private:
   // Private implementation details.
   DirectoryInternals* Internal;