C# 使用StreamWriter C写入后目标文件为空#
我已经编写了一个控制台应用程序,它本身正在按我所希望的那样工作。它的主要输出在控制台中工作得很好。但是循环中的结果我想写入一个文本文件。我已经使用StreamWriter尝试了这一点,尽管我在编译或运行时没有收到任何错误,但我的C:驱动器中的文件仍然为空。有人能发现我错过的任何愚蠢或快速的事情吗 如果你能帮忙,先谢谢你C# 使用StreamWriter C写入后目标文件为空#,c#,streamwriter,C#,Streamwriter,我已经编写了一个控制台应用程序,它本身正在按我所希望的那样工作。它的主要输出在控制台中工作得很好。但是循环中的结果我想写入一个文本文件。我已经使用StreamWriter尝试了这一点,尽管我在编译或运行时没有收到任何错误,但我的C:驱动器中的文件仍然为空。有人能发现我错过的任何愚蠢或快速的事情吗 如果你能帮忙,先谢谢你 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test2
{
class Program
{
static void Main(string[] args)
{
System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\Test.txt");
double z = 0;
double x = 1;
double y = 1;
Console.WriteLine("How many lines should be written to the file?");
Console.WriteLine();
z = double.Parse(System.Console.ReadLine());
Console.WriteLine("Writing " + z + "lines to file!");
Console.WriteLine();
while (z > 0)
{
y = Math.Pow(x, 2);
Console.WriteLine(x + ", " + y*10);
file.WriteLine(x + ", " + y*10);
z = z - 1;
x = x + 1;
}
Console.WriteLine();
Console.WriteLine("**Generation Complete**");
Console.WriteLine();
Console.WriteLine("-------------------------------");
Console.WriteLine();
Console.WriteLine("**Writing to file successful**");
Console.WriteLine();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
file.Close();
}
}
}
我以前也遇到过类似的问题。如果我没记错的话,解决方案归结为将StreamWriter包装在using块中,而不是创建它然后尝试关闭它,例如
static void Main(string[] args)
{
using (var file = new System.IO.StreamWriter("c:\\Test.txt"))
{
double z = 0;
double x = 1;
double y = 1;
Console.WriteLine("How many lines should be written to the file?");
Console.WriteLine();
z = double.Parse(System.Console.ReadLine());
Console.WriteLine("Writing " + z + "lines to file!");
Console.WriteLine();
while (z > 0)
{
y = Math.Pow(x, 2);
Console.WriteLine(x + ", " + y*10);
file.WriteLine(x + ", " + y*10);
z = z - 1;
x = x + 1;
}
Console.WriteLine();
Console.WriteLine("**Generation Complete**");
Console.WriteLine();
Console.WriteLine("-------------------------------");
Console.WriteLine();
Console.WriteLine("**Writing to file successful**");
Console.WriteLine();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
我以前也遇到过类似的问题。如果我没记错的话,解决方案归结为将StreamWriter包装在using块中,而不是创建它然后尝试关闭它,例如
static void Main(string[] args)
{
using (var file = new System.IO.StreamWriter("c:\\Test.txt"))
{
double z = 0;
double x = 1;
double y = 1;
Console.WriteLine("How many lines should be written to the file?");
Console.WriteLine();
z = double.Parse(System.Console.ReadLine());
Console.WriteLine("Writing " + z + "lines to file!");
Console.WriteLine();
while (z > 0)
{
y = Math.Pow(x, 2);
Console.WriteLine(x + ", " + y*10);
file.WriteLine(x + ", " + y*10);
z = z - 1;
x = x + 1;
}
Console.WriteLine();
Console.WriteLine("**Generation Complete**");
Console.WriteLine();
Console.WriteLine("-------------------------------");
Console.WriteLine();
Console.WriteLine("**Writing to file successful**");
Console.WriteLine();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
对实现
IDisposable
的所有内容使用using
statament,如StreamWriter
。这将确保释放非托管资源(,即使出现错误)。如果流为false
(默认值),它还将刷新流
对于实现
IDisposable
的所有内容,如StreamWriter
使用statement。这将确保释放非托管资源(,即使出现错误)。如果流为false
(默认值),它还将刷新流
运行该代码时,我看到一个异常:
Unhandled Exception: System.UnauthorizedAccessException:
Access to the path 'c:\Test.txt' is denied.
现在还不清楚您是如何运行它的,但是如果它被配置为一个控制台应用程序,并且您从控制台窗口运行它,那么您肯定会看到任何异常,我怀疑您也会看到同样的情况
试着把它改为写到你肯定有权访问的地方,也试着找出你以前没有看到异常的原因
此外,正如其他答案所示,使用using
语句肯定会更好,但这不能解释在不创建文件的情况下进行干净运行(无异常)。当我运行该代码时,我看到一个异常:
Unhandled Exception: System.UnauthorizedAccessException:
Access to the path 'c:\Test.txt' is denied.
现在还不清楚您是如何运行它的,但是如果它被配置为一个控制台应用程序,并且您从控制台窗口运行它,那么您肯定会看到任何异常,我怀疑您也会看到同样的情况
试着把它改为写到你肯定有权访问的地方,也试着找出你以前没有看到异常的原因
此外,正如其他答案所示,使用using
语句肯定会更好,但这并不能解释在不创建文件的情况下的干净运行(没有例外)。@DaveDev,Jon Skeet和其他人。谢谢你的回复。此时,我确信在创建文件时不会出现权限问题。但当我打开时,它是空白的。这包括使用“using”语句。有什么想法吗?忽略。现在工作很好。“太谢谢大家了,谁知道怎么了?”达维杰夫、乔恩·斯基特和其他人说。谢谢你的回复。此时,我确信在创建文件时不会出现权限问题。但当我打开时,它是空白的。这包括使用“using”语句。有什么想法吗?忽略。现在工作很好。非常感谢大家知道怎么了吗?谢谢,请看我上面的回复:)谢谢,请看我上面的回复:)如果代码运行时没有异常,那么使用
语句添加是没有帮助的。这仍然是一个好主意,但这并不能解释他们为什么会看到一个空白文件,IMO。如果代码运行时没有异常,那么使用
语句添加一个,将不会有帮助。这仍然是个好主意,但这并不能解释为什么他们看到一个空白文件,IMO。