在 C# 中将信息保存到文本文件
Saving information to a text file in C#
我在学习 C# 的过程中碰壁了,这表明我显然遗漏了一些重要的东西。该行:
var objWriter = new System.IO.StreamWriter(fileName, False);
在下面的代码中会导致错误 - 字符串变量 fileName 无法转换为 System.IO.Stream 且当前上下文中不存在 False。为什么?
string message = "Hi There!";
string myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string fileName = myDocs + "'\'Test.txt";
if (!System.IO.File.Exists(fileName))
{
System.IO.File.Create(fileName).Dispose();
}
var objWriter = new System.IO.StreamWriter(fileName, False);
objWriter.Write(message);
Console.WriteLine("Message Saved");
objWriter.Close();
修复:
将 False
替换为 false
.
说明:
Here 是 StreamWriter 拥有的构造函数列表。请注意,它需要一个 Stream
和一个 Encoding
,或者一个 String
和 Boolean
。
由于 C# 区分大小写,它会尝试在您的代码中的某处查找名为 False 的对象,这解释了您的第一个问题(当前上下文中不存在 False)。但是 False 是一个对象,而不是布尔值,因此编译器假定 fileName 是 Stream 类型(以符合签名),但是,唉,它不知道如何将您的字符串转换为 Stream,因此出现了第二个错误。
你在给定的代码中不工作,将 False 替换为 false
替换此
string fileName = myDocs + "'\'Test.txt";
有了这个
string fileName = myDocs + @"\Test.txt";
我建议的代码
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Test.txt");
using (var fs = new StreamWriter(path))
{
fs.Write("Hi there!");
}
Console.WriteLine("Message Saved");
首先,请使用Path.Combine
静态方法创建完整路径。处理 \
或 \
也可以,但是使用已经创建的方法更漂亮。
其次,在 using
块中创建 IDisposable
对象总是好的。在您的情况下,using
将在使用块作用域结束时关闭您的流。
还有一点就是,最好在你想使用它的地方声明变量。在那种情况下 "Hi there!"
字符串直接在使用的地方创建。这是我们应该遵守的良好做法之一。请看that link.
我在学习 C# 的过程中碰壁了,这表明我显然遗漏了一些重要的东西。该行:
var objWriter = new System.IO.StreamWriter(fileName, False);
在下面的代码中会导致错误 - 字符串变量 fileName 无法转换为 System.IO.Stream 且当前上下文中不存在 False。为什么?
string message = "Hi There!";
string myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string fileName = myDocs + "'\'Test.txt";
if (!System.IO.File.Exists(fileName))
{
System.IO.File.Create(fileName).Dispose();
}
var objWriter = new System.IO.StreamWriter(fileName, False);
objWriter.Write(message);
Console.WriteLine("Message Saved");
objWriter.Close();
修复:
将 False
替换为 false
.
说明:
Here 是 StreamWriter 拥有的构造函数列表。请注意,它需要一个 Stream
和一个 Encoding
,或者一个 String
和 Boolean
。
由于 C# 区分大小写,它会尝试在您的代码中的某处查找名为 False 的对象,这解释了您的第一个问题(当前上下文中不存在 False)。但是 False 是一个对象,而不是布尔值,因此编译器假定 fileName 是 Stream 类型(以符合签名),但是,唉,它不知道如何将您的字符串转换为 Stream,因此出现了第二个错误。
你在给定的代码中不工作,将 False 替换为 false
替换此
string fileName = myDocs + "'\'Test.txt";
有了这个
string fileName = myDocs + @"\Test.txt";
我建议的代码
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Test.txt");
using (var fs = new StreamWriter(path))
{
fs.Write("Hi there!");
}
Console.WriteLine("Message Saved");
首先,请使用Path.Combine
静态方法创建完整路径。处理 \
或 \
也可以,但是使用已经创建的方法更漂亮。
其次,在 using
块中创建 IDisposable
对象总是好的。在您的情况下,using
将在使用块作用域结束时关闭您的流。
还有一点就是,最好在你想使用它的地方声明变量。在那种情况下 "Hi there!"
字符串直接在使用的地方创建。这是我们应该遵守的良好做法之一。请看that link.