diff --git a/core/io/files/files.factor b/core/io/files/files.factor
index 9a99090699..8c9bd8f2e9 100755
--- a/core/io/files/files.factor
+++ b/core/io/files/files.factor
@@ -169,3 +169,12 @@ PRIVATE>
 
 : file-contents ( path -- str )
     dup <file-reader> swap file-length <sbuf> [ stream-copy ] keep >string ;
+
+: with-file-in ( path quot -- )
+    >r <file-reader> r> with-stream ; inline
+
+: with-file-out ( path quot -- )
+    >r <file-writer> r> with-stream ; inline
+
+: with-file-appender ( path quot -- )
+    >r <file-appender> r> with-stream ; inline