使用textwwriter不能正确地写入局部整数变量的值



问题是我在方法的开头声明了变量并打开了流

    int i = 0;
    int FailedToCopyImages = 0;
    int NumberOfCopiedImages = 0;
    int PreviouslyCopiedImages = 0;
    TextWriter tw = new StreamWriter(pathToFile, true);

然后我在try-catch-finally块中做了一些东西,在' finally部分我有:

finally
            {
                Console.WriteLine(i);
                Console.WriteLine(NumberOfCopiedImages);
                Console.WriteLine(PreviouslyCopiedImages);
                Console.WriteLine(FailedToCopyImages);
                tw.WriteLine(" ");
                tw.WriteLine("All images: " + i +
                    " | Successfully copied: " + NumberOfCopiedImages +
                    " | Previously copied: " + PreviouslyCopiedImages +
                    " | Failed To Copy: " + FailedToCopyImages);
                tw.WriteLine("--------------End Of Material Images-------------");

我在四种方法中这样做,我得到了正确的结果。在控制台中,我看到变量持有正确的值,但在txt文件中,我得到零(0)。

在大多数情况下,您需要调用tw.Flush()tw.Close()(或者只是将new StreamWriter(..)包装在using (...)语句中)才能在文件中看到结果。

即使它似乎开始与其他文件路径一起工作(正如您所评论的)-没有魔法(至少在编程中)-如果没有适当的Flush/Dispose,它总有一天会失败。

最新更新