C# 将文件的一部分移动到另一个文件

C# 将文件的一部分移动到另一个文件,c#,.net,algorithm,C#,.net,Algorithm,我有几行的文件: 线路1 线路2 线路3 LinesN 我有以下代码: 我的代码 while ((line = streamReader.ReadLine()) != null) { var str = GetData(line); if(str == "Fatal Error") { } } 在GetData期间,我可以抛出一些异常。在本例中,我希望将剩余的行移动到另一个文件中。我该怎么做? 我应该申报吗?或者有更聪明的方法吗?在这里,您迭代您的行

我有几行的文件:

线路1

线路2

线路3

LinesN

我有以下代码:

我的代码

while ((line = streamReader.ReadLine()) != null)
{ 
    var str = GetData(line);
    if(str == "Fatal Error")
    {
    }
}    
GetData
期间,我可以抛出一些异常。在本例中,我希望将剩余的行移动到另一个文件中。我该怎么做?

我应该申报吗?或者有更聪明的方法吗?

在这里,您迭代您的行,一旦遇到一些“致命错误”,您就开始将后续行复制到另一个文件中:

var thereWasAnError = false;
while ((line = streamReader.ReadLine()) != null)
{ 
    var str = GetData(line);
    if(thereWasAnError)
    {
         // write this line to the other file
    }
    if(str == "Fatal Error")
    {
        thereWasAnError= true;
    }
}  

在这里,您迭代您的行,一旦遇到一些“致命错误”,您就开始将后续行复制到另一个文件中:

var thereWasAnError = false;
while ((line = streamReader.ReadLine()) != null)
{ 
    var str = GetData(line);
    if(thereWasAnError)
    {
         // write this line to the other file
    }
    if(str == "Fatal Error")
    {
        thereWasAnError= true;
    }
}  

您只需在检测到错误的地方继续,即:

while ((line = streamReader.ReadLine()) != null)
{ 
    var str = GetData(line);
    if(str == "Fatal Error")
    {
        WriteRemainingLines(line, streamReader);
        break;
    }
}  
参数将包括包含错误的行:

public void WriteRemainingLines(string line, streamReader reader)
{
    using (var targetfile = ...)
    {
        do
        {
            targetfile.WriteLine(line);
        }
        while ((line = reader.ReadLine()) != null);
    }
}

您只需在检测到错误的地方继续,即:

while ((line = streamReader.ReadLine()) != null)
{ 
    var str = GetData(line);
    if(str == "Fatal Error")
    {
        WriteRemainingLines(line, streamReader);
        break;
    }
}  
参数将包括包含错误的行:

public void WriteRemainingLines(string line, streamReader reader)
{
    using (var targetfile = ...)
    {
        do
        {
            targetfile.WriteLine(line);
        }
        while ((line = reader.ReadLine()) != null);
    }
}

例外情况是什么?用try-catch包装它?这就是你捕捉异常的方式。我处理互联网断开。我得到
WebException e
。如果我得到
e.response
我会处理不同的情况,但是如果
e.response==null
我会返回“致命错误”。在此之后,我应该将未处理的行写入另一个文件。您是否可以添加更好的解释“我应该声明positionCount?”可能是我可以声明currentPosition。这将是计数处理符号。因此,我可以通过
sr.Read(someString,currentPosition,length)
写入剩余的行,异常是什么?用try-catch包装它?这就是你捕捉异常的方式。我处理互联网断开。我得到
WebException e
。如果我得到
e.response
我会处理不同的情况,但是如果
e.response==null
我会返回“致命错误”。在此之后,我应该将未处理的行写入另一个文件。您是否可以添加更好的解释“我应该声明positionCount?”可能是我可以声明currentPosition。这将是计数处理符号。因此,我可以通过
sr.Read(someString,currentPosition,length)
写入剩余的行。遇到致命错误后,您不希望GetData继续处理行。@phatfingers可能会这样。也许不是。我在问题中没有看到任何与此相关的内容。您不希望GetData在遇到致命错误后继续处理行。@phatfingers可能。也许不是。我在问题中没有看到任何与此相关的内容。