F# 输出文本文件引发错误,而输入文本文件不会

本文关键字:文本 文件 输入 输出 错误 | 更新日期: 2023-09-27 18:31:00

因此,当我使用StreamReader读取文本文件时,我能够创建下面的gpa序列。

let pathtoinfile = @"c:'temp'Grades.txt";
let reader = new StreamReader(pathtoinfile)
let csv = reader.ReadToEnd()
let allInfo =
    csv.Split([|''n'|])
let gpa =
    csv.Split([|''n'|])
    |> Seq.map (fun line -> line.Split([|','|]))
    |> Seq.map (fun values -> float values.[5])

现在,我将文件中的信息转换为数组并放入输出文件中。

let allArray = Seq.toArray allInfo;
let pathtooutfile = @"c:'temp'Grades2.txt";
File.WriteAllLines(pathtooutfile , allArray)

现在,当我尝试拆分文件时,我得到一个 IndexOutOfRangeException 当我将数组写入文件时,它会改变格式吗? 不知道我哪里出了问题,因为当我通过检查比较它们时,两个文件看起来都一样。

let reader2 = new StreamReader(pathtooutfile)
let csv2 = reader2.ReadToEnd()
let gpa2 =
    csv2.Split([|''n'|])
    |> Seq.map (fun line -> line.Split([|','|]))
    |> Seq.map (fun values -> float values.[5])

F# 输出文本文件引发错误,而输入文本文件不会

好的,要回答我自己的问题。 当您写入 outfile 时,文件底部会放置一个空行。 解决方法是在拆分字符串之前修剪 csv 字符串以删除所有空格。 希望有一天这对某人有所帮助。

let csv = csv.Trim()