open System
//helpfunction
let fileReplace filename needle replace =
let replaceIn (reader:System.IO.StreamReader) needle (replace: String) =
while not(reader.EndOfStream) do
let mutable allText = reader.ReadToEnd()
allText <- allText.Replace(needle, replace)
reader.Close()
//start
let reader = System.IO.File.OpenText filename
let newText = replaceIn reader needle replace
let writer = System.IO.File.CreateText filename
writer.Write newText ; writer.Close()
// testing
let filename = @".\abc.txt"
let needle = "med"
let replace = "MED"
fileReplace filename needle replace
我已经尝试了一堆移动的 reader.Close(),但还没有结果。我知道如果我在printfn "%A" allText
下面插入reader.Close()
,它会打印出正确的结果,所以当我打电话给 writer 时我怀疑它出错了。我需要用 abc.txt 中的 MED 替换 med 的代码。但相反,它留下了一个空的 abc.txt