我有一个获得目的地的变量:
var lin = (Path + "config.ini").ToString();
var lines = File.ReadAllLines(lin);
var InstallerFile = lines.Where(txt => txt.Contains("IstallerFile="))
.Select(txt => txt.Split('=')[1].Replace("\"", "")).FirstOrDefault();
运行此代码后,我将:InstallerFile=D:\folder\instaler.ini
或InstallerFile=D:\folder\instaler_input.ini
这取决于config
文件中的内容。
现在用{:}复制C:\temp\
中的文件:
if (File.Exists(InstallerFile))
System.IO.File.Copy(InstallerFile, @"C:\temp\");
现在我想验证文件的名称,因为行不同。例如,如果我有installer.ini
,我需要这样做:
var modifiedLines = linesInst.Select(line =>
{
if (line.StartsWith("destination="))
return string.Format("destination=\"{0}", textBox1.Text);
else
return line;
});
File.WriteAllLines(InstallerFile, modifiedLines);
如果我有installer_input.ini
,我需要在以#product=MAtlab
开头的行之前在此文件上添加一行。
所以我有两个问题,如何获取文件的名称以及如何在指定的行之前添加新行?
答案 0 :(得分:0)
您可以使用以下命令获取文件的名称:
Path.GetFileName(path)
要在特定行之前插入新行,您必须读取所有文件,当您找到推送新元素的特定行时。示例代码如下:
string path=Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"32901448","InputFle.txt");
string[] lines = File.ReadAllLines(path);
List<string> linesOut = new List<string>();
foreach (string line in lines)
{
if (line.ToUpper().Trim() == "BLUE")
{
linesOut.Add("YELLOW");
}
linesOut.Add(line);
}
File.WriteAllLines(path, linesOut);