我正在尝试创建一个带有索引的日志文件系统。 对于日志文件中的每100行,日志文件应重新创建为log1.log,对于创建的每1000个文件,index1.log重新创建为index2.log
if (timesrun % 100 != 0)
{
Debug.Write(" enter code here. ");
if (timesrun % 1000 != 0)
{
Debug.Write("'");
Debug.Write(" enter code here. ");
}
else
{
Debug.WriteLine("rename files index?.xml ");
string basename = "index";
string extention = ".log";
crntstmap++;
nowsitemap = basename + crntstmap + extention;
Debug.WriteLine(nowsitemap);
}
//call method create actual file using the filename + timesrun IE
}
else
{
Debug.WriteLine("rename files log?.php ");
string basename = "log";
string extention = ".log";
crntindx++;
nowindex = basename + crntindx + extention;
Debug.WriteLine(nowindex);
}
我得到了奇怪的结果,if循环的第二部分永远不会运行,我从未见过Debug.WriteLine(nowsitemap);
答案 0 :(得分:3)
我不确定你要完成什么,但执行从未进入该分支的原因是因为数字不可能不是100
的倍数< / em>是1000
的倍数。 100
是1000
的一个因素。
if(timesrun % 100 != 0 && timesrun % 1000 == 0) // Always false
{
Debug.WriteLine("rename files index?.xml ");
string basename = "index";
...
答案 1 :(得分:1)
基本上你的比较是倒置的。这样:
if (timesrun % 100 != 0)
将在100个中运行99次,而不是一个时间中的100次。
你的意思是:
if (timesrun % 100 == 0)
同样适用于1000个案例......虽然那将会覆盖每个 10 文件的文件,而不是每个 1000 文件,因为你将会这样做在1000 行之后。您可以将此值设为100000,也可以更改为行的一个变量和文件的一个变量。
(请注意,如果你恰当地排列缩进,你的代码结构也会更加清晰。)
答案 2 :(得分:0)
因为if timesrun % 100 != 0
所以始终timesrun % 1000
将是not 0