Home
F#
File Handling, open System.IO
Updated Dec 22, 2023
Dot Net Perls
Files. In files we find persistent data. Files introduce complexity and bugs. A file may be unavailable, have invalid formatting, or be corrupted.
Open System.IO. In the System.IO namespace we find many useful types like StreamReader. Methods like File.ReadAllLines are also included.
StreamReader. Let us begin with a StreamReader example. We introduce a type called Data. In the Read function, a member of Data, we open a StreamReader and read in a file's lines.
Info The "use" keyword ensures the StreamReader is correctly disposed of when it is no longer needed.
Next We use a while-loop to continue iterating over the lines in the file while they can be read. We read all the lines and print them.
open System.IO type Data() = member x.Read() = // Read in a file with StreamReader. use stream = new StreamReader @"C:\programs\file.txt" // Continue reading while valid lines. let mutable valid = true while (valid) do let line = stream.ReadLine() if (line = null) then valid <- false else // Display line. printfn "%A" line // Create instance of Data and Read in the file. let data = Data() data.Read()
carrot squash yam onion tomato
"carrot" "squash" "yam" "onion" "tomato"
File.ReadAllLines. This is a simpler way to read all the lines in a file, but it may be less efficient on large files. ReadAllLines returns an array of strings.
Here We use Seq.toList to get a list from the array. And with Seq.where we get a sequence of only capitalized lines in the list.
open System open System.IO let lines = File.ReadAllLines(@"C:\programs\file.txt") // Convert file lines into a list. let list = Seq.toList lines printfn "%A" list // Get sequence of only capitalized lines in list. let uppercase = Seq.where (fun (n : String) -> Char.IsUpper(n, 0)) list printfn "%A" uppercase
ABC abc Cat Dog bird fish
["ABC"; "abc"; "Cat"; "Dog"; "bird"; "fish"] seq ["ABC"; "Cat"; "Dog"]
Summary. In F# we have access to the .NET Framework's IO library. This enables efficient and well-tested use of files. With StreamReader we iterate over the lines in a file.
Although we can use constructs like the while-loop, if and else, a simpler approach is to use methods like File.ReadAllLines. The returned array can be used easily in F#.
Array
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Dec 22, 2023 (edit).
Home
Changes
© 2007-2025 Sam Allen