【发布时间】:2016-11-02 13:12:25
【问题描述】:
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(),但还没有结果。我知道如果我在reader.Close() 下插入printfn "%A" allText,它会打印出正确的结果,所以当我打电话给 writer 时我怀疑它出错了。我需要用 abc.txt 中的 MED 替换 med 的代码。但它却留下了一个空的 abc.txt
【问题讨论】:
标签: replace f# stream overwrite opentext