diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4162b26..c9cc3c0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+#### 2.3.0
+
+* Added the following convenience methods in `Directory`:
+  * `Directory.childDirectory(String basename)`
+  * `Directory.childFile(String basename)`
+  * `Directory.childLink(String basename)`
+
 #### 2.2.0
 
 * Added `ErrorCodes` class, which holds errno values.
diff --git a/lib/src/backends/chroot/chroot_directory.dart b/lib/src/backends/chroot/chroot_directory.dart
index 102a1c1..3cfaa61 100644
--- a/lib/src/backends/chroot/chroot_directory.dart
+++ b/lib/src/backends/chroot/chroot_directory.dart
@@ -5,7 +5,7 @@
 part of file.src.backends.chroot;
 
 class _ChrootDirectory extends _ChrootFileSystemEntity<Directory, io.Directory>
-    with ForwardingDirectory {
+    with ForwardingDirectory, common.DirectoryAddOnsMixin {
   _ChrootDirectory(ChrootFileSystem fs, String path) : super(fs, path);
 
   factory _ChrootDirectory.wrapped(
diff --git a/lib/src/backends/local.dart b/lib/src/backends/local.dart
index a76c41c..b5ef405 100644
--- a/lib/src/backends/local.dart
+++ b/lib/src/backends/local.dart
@@ -6,6 +6,7 @@
 
 import 'dart:async';
 
+import 'package:file/src/common.dart' as common;
 import 'package:file/src/forwarding.dart';
 import 'package:file/src/io.dart' as io;
 import 'package:file/file.dart';
diff --git a/lib/src/backends/local/local_directory.dart b/lib/src/backends/local/local_directory.dart
index 1b7ecbd..2f3f238 100644
--- a/lib/src/backends/local/local_directory.dart
+++ b/lib/src/backends/local/local_directory.dart
@@ -6,7 +6,7 @@
 
 class _LocalDirectory
     extends _LocalFileSystemEntity<_LocalDirectory, io.Directory>
-    with ForwardingDirectory {
+    with ForwardingDirectory, common.DirectoryAddOnsMixin {
   _LocalDirectory(FileSystem fs, io.Directory delegate) : super(fs, delegate);
 
   @override
diff --git a/lib/src/backends/memory/memory_directory.dart b/lib/src/backends/memory/memory_directory.dart
index 3a3cbb1..da41c96 100644
--- a/lib/src/backends/memory/memory_directory.dart
+++ b/lib/src/backends/memory/memory_directory.dart
@@ -4,7 +4,9 @@
 
 part of file.src.backends.memory;
 
-class _MemoryDirectory extends _MemoryFileSystemEntity implements Directory {
+class _MemoryDirectory extends _MemoryFileSystemEntity
+    with common.DirectoryAddOnsMixin
+    implements Directory {
   static int _tempCounter = 0;
 
   _MemoryDirectory(MemoryFileSystem fileSystem, String path)
diff --git a/lib/src/backends/record_replay/recording_directory.dart b/lib/src/backends/record_replay/recording_directory.dart
index 52334b1..d38abe9 100644
--- a/lib/src/backends/record_replay/recording_directory.dart
+++ b/lib/src/backends/record_replay/recording_directory.dart
@@ -24,6 +24,9 @@
       #createTempSync: _createTempSync,
       #list: _list,
       #listSync: _listSync,
+      #childDirectory: _childDirectory,
+      #childFile: _childFile,
+      #childLink: _childLink,
     });
   }
 
@@ -63,4 +66,11 @@
     }
     throw new FileSystemException('Unsupported type: $entity', entity.path);
   }
+
+  Directory _childDirectory(String basename) =>
+      wrapDirectory(delegate.childDirectory(basename));
+
+  File _childFile(String basename) => wrapFile(delegate.childFile(basename));
+
+  Link _childLink(String basename) => wrapLink(delegate.childLink(basename));
 }
diff --git a/lib/src/backends/record_replay/replay_directory.dart b/lib/src/backends/record_replay/replay_directory.dart
index 2d264e5..b6130be 100644
--- a/lib/src/backends/record_replay/replay_directory.dart
+++ b/lib/src/backends/record_replay/replay_directory.dart
@@ -36,6 +36,9 @@
       #createTempSync: reviveDirectory,
       #list: reviveEntities.fuse(const ToStream<FileSystemEntity>()),
       #listSync: reviveEntities,
+      #childDirectory: reviveDirectory,
+      #childFile: new ReviveFile(fileSystem),
+      #childLink: new ReviveLink(fileSystem),
     });
 
     properties.addAll(<Symbol, Converter<dynamic, dynamic>>{
diff --git a/lib/src/common.dart b/lib/src/common.dart
index 87148c5..39b647f 100644
--- a/lib/src/common.dart
+++ b/lib/src/common.dart
@@ -63,3 +63,22 @@
 FileSystemException _fsException(String path, String msg, int errorCode) {
   return new FileSystemException(msg, path, new OSError(msg, errorCode));
 }
+
+/// Mixin containing implementations of [Directory] methods that are common
+/// to all implementations.
+abstract class DirectoryAddOnsMixin implements Directory {
+  @override
+  Directory childDirectory(String basename) {
+    return fileSystem.directory(fileSystem.path.join(path, basename));
+  }
+
+  @override
+  File childFile(String basename) {
+    return fileSystem.file(fileSystem.path.join(path, basename));
+  }
+
+  @override
+  Link childLink(String basename) {
+    return fileSystem.link(fileSystem.path.join(path, basename));
+  }
+}
diff --git a/lib/src/interface/directory.dart b/lib/src/interface/directory.dart
index f19c67f..f96e515 100644
--- a/lib/src/interface/directory.dart
+++ b/lib/src/interface/directory.dart
@@ -4,7 +4,9 @@
 
 import 'dart:async';
 
+import 'file.dart';
 import 'file_system_entity.dart';
+import 'link.dart';
 import '../io.dart' as io;
 
 /// A reference to a directory on the file system.
@@ -35,4 +37,16 @@
   @override
   List<FileSystemEntity> listSync(
       {bool recursive: false, bool followLinks: true});
+
+  /// Returns a reference to a [Directory] that exists as a child of this
+  /// directory and has the specified [basename].
+  Directory childDirectory(String basename);
+
+  /// Returns a reference to a [File] that exists as a child of this directory
+  /// and has the specified [basename].
+  File childFile(String basename);
+
+  /// Returns a reference to a [Link] that exists as a child of this directory
+  /// and has the specified [basename].
+  Link childLink(String basename);
 }
diff --git a/lib/src/interface/file_system.dart b/lib/src/interface/file_system.dart
index 084ba82..18f5a51 100644
--- a/lib/src/interface/file_system.dart
+++ b/lib/src/interface/file_system.dart
@@ -4,7 +4,7 @@
 
 import 'dart:async';
 
-import 'package:path/path.dart' as path;
+import 'package:path/path.dart' as p;
 
 import 'directory.dart';
 import 'file.dart';
@@ -38,7 +38,7 @@
   Link link(dynamic path);
 
   /// An object for manipulating paths in this file system.
-  path.Context get path;
+  p.Context get path;
 
   /// Gets the system temp directory.
   ///
diff --git a/pubspec.yaml b/pubspec.yaml
index 3001c16..047b297 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: file
-version: 2.2.0
+version: 2.3.0
 authors:
 - Matan Lurey <matanl@google.com>
 - Yegor Jbanov <yjbanov@google.com>
diff --git a/test/common_tests.dart b/test/common_tests.dart
index e89b02d..468a263 100644
--- a/test/common_tests.dart
+++ b/test/common_tests.dart
@@ -1101,6 +1101,16 @@
           }
         });
       });
+
+      test('childEntities', () {
+        Directory dir = fs.directory(ns('/foo'))..createSync();
+        dir.childDirectory('bar').createSync();
+        dir.childFile('baz').createSync();
+        dir.childLink('qux').createSync('bar');
+        expect(fs.directory(ns('/foo/bar')), exists);
+        expect(fs.file(ns('/foo/baz')), exists);
+        expect(fs.link(ns('/foo/qux')), exists);
+      });
     });
 
     group('File', () {
