From 0cf44d0c66e98ee39c4d9ae8e256bb19f786545d Mon Sep 17 00:00:00 2001 From: Bahman Movaqar Date: Thu, 26 Dec 2024 14:31:43 -0800 Subject: [PATCH] Write essential words to deal with files. --- bjforth/src/main/forth/bjForth.forth | 64 ++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/bjforth/src/main/forth/bjForth.forth b/bjforth/src/main/forth/bjForth.forth index 575f63cf..3ffd5701 100644 --- a/bjforth/src/main/forth/bjForth.forth +++ b/bjforth/src/main/forth/bjForth.forth @@ -445,3 +445,67 @@ 0 NUM->STR ; + +################################################################################################### +# FILE-OPEN ( s -- BufferedReader ) +# +# ```forth +# ." /home/bahman/.bashrc ". FILE-OPEN +# .S +# java.io.BufferedReader +# ``` +################################################################################################### + +: FILE-OPEN ( s -- BufferedReader ) + @< FileReader(String)/1 >@ + @< BufferedReader(Reader)/1 >@ +; + +################################################################################################### +# FILE-READ-LINE ( BufferedReader -- s ) +# +# Reads a single line from a file. +# +# ```forth +# FILE-READ-LINE +# .S +# java.lang.String<# -*- mode: sh-mode; sh-basic-offset: 2; -*-> +# ``` +################################################################################################### + +: FILE-READ-LINE ( BufferedReader -- s ) + .< readLine()/0 >. +; + +################################################################################################### +# FILE-PRINT ( BufferedReader -- ) +# +# Prints the contents of a file to stdout. +################################################################################################### + +: FILE-PRINT ( BufferedReader -- ) + BEGIN + DUP + .< readLine()/0 >. + DUP + ?NULL IF + DROP + EXIT + ELSE + PRINTLN + DROP + THEN + AGAIN +; + +################################################################################################### +# FILE-CLOSE ( BufferedReader -- ) +# +# Closes the file handle. +################################################################################################### + +: FILE-CLOSE ( BufferedReader -- ) + .< close()/0 >. + DROP +; +