我有一个名为Load.txt的文本文件,其中包含大约200行。我有一个复选框,如果选中它,那么我想创建一个新文件,它只有Load.txt中的前100行。我正在使用c#这个程序。实际上我真正的要求是我必须从第110行删除201.And我的代码在下面,因为某种原因它从第1行删除到92.我不知道发生了什么。
String line = null;
String tempFile = Path.GetTempFileName();
String filePath = saveFileDialog1.FileName;
int line_number = 110;
int lines_to_delete = 201;
using (StreamReader reader = new StreamReader(sqlConnectionString))
{
using (StreamWriter writer = new StreamWriter(saveFileDialog1.FileName))
{
while ((line = reader.ReadLine()) != null)
{
line_number++;
if (line_number <= lines_to_delete)
continue;
writer.WriteLine(line);
}
}
}
所以我想出了这个问题。但我的下一个问题是:我正在更新文本文件中的一些变量。在我的代码没问题之前。但现在该代码与我的删除行代码冲突。如果我能删除行,那么我无法更新这些变量。
我的代码是:
File.WriteAllLines(saveFileDialog1.FileName, System.IO.File.ReadLine(sqlConnectionString).Take(110));
File.WriteAllText(saveFileDialog1.FileName, fileContents);
答案 0 :(得分:2)
File.WriteAllLines("new.txt", File.ReadLines("Load.txt").Take(100));
更新后......
var desired = File.ReadLines("Load.txt")
.Take(110) // "And I want to keep 1-110" -- OP
.Select(line => UpdateLine(line)); // "And I also want to update variables between 1-110" -- OP
File.WriteAllLines("new.txt", desired);
...
static string UpdateLine(string given)
{
var updated = given;
// other ops
return updated;
}
答案 1 :(得分:0)
这应该完成你所需要的。它读取文本然后转储100行。
System.IO.File.WriteAllLines("newLoad.txt", System.IO.File.ReadLines("Load.txt").Take(100));
答案 2 :(得分:0)
“我想创建一个只有前100行的新文件”
保持原始模型,这是保持前100行的一种方法:
int LinesToKeep = 100;
using (StreamReader reader = new StreamReader(sqlConnectionString))
{
using (StreamWriter writer = new StreamWriter(saveFileDialog1.FileName))
{
for (int i = 1; (i <= LinesToKeep) && ((line = reader.ReadLine()) != null); i++)
{
writer.WriteLine(line);
}
}
}
“我真正的要求是我必须从第110行删除到201”
所以复制文件,但跳过110到201行?
int currentLine = 0;
using (StreamReader reader = new StreamReader(sqlConnectionString))
{
using (StreamWriter writer = new StreamWriter(saveFileDialog1.FileName))
{
while ((line = reader.ReadLine()) != null)
{
currentLine++;
if (currentLine < 110 || currentLine > 201)
{
writer.WriteLine(line);
}
}
}
}