我想从文本文件中删除特定行,但我的代码不起作用

时间:2018-04-01 12:36:04

标签: c# .net

int stv = Convert.ToInt32(Console.ReadLine());
StreamReader read = File.OpenText("Izdelki.txt");
int st = 1;
string newtext=" ";
string line = read.ReadLine();
while (line != null)
{
    st++;
    if (st != stv) 
    {
        newtext += line;
    }

}

我认为这应该有用,但我不确定。我正在为scholl项目做这件事。如果您有其他消息,请写下来。

2 个答案:

答案 0 :(得分:1)

使用LINQ,Luke!

int stv = ...

var lines = File.ReadAllLines("Izdelki.txt")
    .Where((s, i) => i != stv);

File.WriteAllLines("Izdelki.txt", lines);

也许你应该使用这样的条件:

i != (stv - 1)

答案 1 :(得分:0)

是的,你是正确的,只有从文件中读取而不向其中写入任何内容。

将字符串文件视为string的数组或集合非常有用。 这意味着当读取文件时,它会将所有内容放入字符串集合/数组中,而写入操作只会将此数组写回文件。 为此,您有两种方法:File.ReadAllLines()File.WriteAllLines()

您可以采取以下措施:

int stv = Convert.ToInt32(Console.ReadLine());
List<string> file = File.ReadAllLines("Izdelki.txt").ToList();

// find index of line that you need to change here and change it in your List eg file[x] = y
// now save it using File.WriteAllLines("Izdelki.txt", file);