Interactive Session #7: Text file I/O

Binary and text file access is provided through the module System.IO. The type File provides static methods to create, open, read and write files.

File.CreateText creates a new file (if it exists already content is overwritten) in text mode.

> open System.IO;;
> let f = File.CreateText("readme.txt");;          

val f : StreamWriter

> f.Write('R');;
val it : unit = ()
> f.Write('E');;
val it : unit = ()
> f.Write('A');;
val it : unit = ()
> f.Write("ME");;
> f.Close();;
val it : unit = ()

An existing text file may be read completely into a string with File.ReadAllText

> File.Exists("readme.txt");;
val it : bool = true
> let txt = File.ReadAllText("readme.txt");;

val txt : string = "README"

Alternatively you may open and read with File.Open, File.Read and File.ReadBlock

> let f = File.OpenText("readme.txt");;

val f : StreamReader

> char(f.Read());;
val it : char = 'R'
> let buffer = Array.create 100 '\x00';;

val buffer : char [] =
 [|'00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'|]

> f.ReadBlock(buffer, 0, 10);;
val it : int = 5
> buffer;;
val it : char [] =
 [|'E'; 'A'; 'M'; 'E'; '10'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00';
 '00'; '00'; '00'; '00'; '00'; '00'; '00'; '00'|]
> f.ReadBlock(buffer, 0, 10);;
val it : int = 0
> f.Close();;
val it : unit = ()
Advertisements
This entry was posted in Getting Started, IO, Text. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s