C# 将文件的一部分移动到另一个文件
我有几行的文件: 线路1 线路2 线路3 LinesN 我有以下代码: 我的代码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期间,我可以抛出一些异常。在本例中,我希望将剩余的行移动到另一个文件中。我该怎么做? 我应该申报吗?或者有更聪明的方法吗?在这里,您迭代您的行
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可能。也许不是。我在问题中没有看到任何与此相关的内容。