Skip to content

Commit feb48bc

Browse files
committed
Add example of writing a file
1 parent 2c7cfd6 commit feb48bc

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

examples/lib/WriteFile.sml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
structure WriteFile:
2+
sig
3+
val writeBinSeq: {filename: string, content: Word8.word Seq.t} -> unit
4+
end =
5+
struct
6+
7+
fun writeBinSeq {filename, content} =
8+
let
9+
val n = Seq.length content
10+
val {file, file_size = oldSize} = MPL.File.openFileWriteable filename n
11+
val k = 10000
12+
val m = 1 + (n-1) div k
13+
in
14+
ForkJoin.parfor 1 (0, m) (fn i =>
15+
let
16+
val lo = i*k
17+
val hi = Int.min ((i+1)*k, n)
18+
in
19+
MPL.File.writeWord8s { file = file , file_offset = oldSize + lo, offset = 0} (Seq.subseq content (lo, hi-lo))
20+
end
21+
);
22+
MPL.File.closeFile file
23+
end
24+
end

0 commit comments

Comments
 (0)