我知道这已被问过几次,但我需要一种快速的方法来处理不同大小的文件(小文件和大文件)。
我需要在 sat(txt) 文件中编辑比例因子。这是第三行的第一个数字:
700 104 1 0 16 Autodesk AutoCAD 19 ASM 221.0.0.1871 NT 24 星期二
2016 年 8 月 16 日 09:02:14
1000 9.9999999999999995e-007 1e-010
我建议提取一个方法和Linq:
private static String MyEditLine(string value) {
var items = value.Split(new char[] { ' ' }, 2);
items[0] = "2000"; // let's change 1000 into 2000
return string.Join(" ", items);
}
...
var target = File
.ReadLines(@"C:\MyFile.txt")
.Select((line, index) => index != 2
? line
: MyEditLine(line))
.ToList();
File.WriteAllLines(@"C:\MyFile.txt", target);
假设您阅读了您的文件并获得了String[]
呼叫file
,并且您要修改的号码表示为float
.
您可以使用以下代码首先提取您想要的行。在此之后,您将通过该号码float.TryParse(..)
int lineWithParam = 3;
String[] splittedLine = (file[lineWithParam-1]).Split(new char[] { ' ' }, 2);
if(splittedLine.Length == 2)
{
float fact = 0.0f;
String newFact = splittedLine[0];
// or how ever you want to modify your factor
if(float.TryParse(splittedLine[0], out fact))
{
newFact = "" + (fact * 12.3f);
}
file[lineWithParam-1] = newFact + " " + splittedLine[1];
}
这是一个可执行示例:https ://dotnetfiddle.net/NVgETo
在此之后,您可以将其写String[] file
回真实文件。
注意:file
如果给定行中的第一个参数无效,这不会修改float
!