在 C# 中创建文本文件
Creating text file in C#
我正在学习如何在 C# 中创建文本文件,但我遇到了问题。我使用了这段代码:
private void btnCreate_Click(object sender, EventArgs e)
{
string path = @"C:\CSharpTestFolder\Test.txt";
if (!File.Exists(path))
{
File.Create(path);
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("The first line!");
}
}
else if (File.Exists(path))
MessageBox.Show("File with this path already exists.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
当我按下 "Create" 按钮时,Visual Studio 显示错误 'System.IO.DirectoryNotFoundException',指向 "File.Create(path)"。
问题出在哪里?
异常表明您的目录 C:\CSharpTestFolder
不存在。 File.Create
将在 现有的 folder/path 中创建一个文件,它也不会创建完整路径。
您的检查 File.Exists(path)
将 return 错误,因为目录不存在,文件也不存在。您需要先在文件夹上检查 Directory.Exists
,然后创建您的目录,然后创建文件。
将您的文件操作附在try/catch
中。您不能 100% 确定 File.Exists
和 Directory.Exists
,可能还有其他过程 creating/removing 这些项目,如果您仅依靠这些检查,您可能 运行 会遇到问题.
您可以像这样创建目录:
string directoryName = Path.GetDirectoryName(path);
Directory.CreateDirectory(directoryName);
(你可以调用Directory.CreateDirectory
而不调用Directory.Exists
,如果文件夹已经存在它不会抛出异常)然后check/create 你的文件
您必须先创建目录。
string directory = @"C:\CSharpTestFolder";
if(!Directory.Exists(directory))
Directory.CreateDirectory(directory);
string path = Path.Combine(directory, "Test.txt");
if (!File.Exists(path))
{
File.Create(path);
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("The first line!");
}
}
else if (File.Exists(path))
MessageBox.Show("File with this path already exists.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
好吧,假设您的目录存在(如您所说),那么您还有另一个问题
File.Create 锁定它创建的文件,您不能以这种方式使用 StreamWriter。
相反,您需要编写
using(FileStream strm = File.Create(path))
using(StreamWriter sw = new StreamWriter(strm))
sw.WriteLine("The first line!");
然而,所有这些都不是真正必要的,除非您需要使用特定选项创建文件 (see File.Create overload list),因为如果文件不存在,StreamWriter 会自行创建文件。
// File.Create(path);
using(StreamWriter sw = new StreamWriter(path))
sw.WriteLine("Text");
...或全部在一条线上
File.WriteAllText(path, "The first line");
试试这个。
string path = @"C:\CSharpTestFolder";
if (Directory.Exists(path))
{
File.AppendAllText(path + "\Test.txt", "The first line");
}
else
{
Directory.CreateDirectory(path);
File.AppendAllText(path + "\Test.txt", "The first line");
}
File.AppendAllText(path, text)
方法如果不存在则创建一个文本文件;追加文本并关闭文件。
如果文件已经存在,它将打开文件并向其追加文本,然后关闭文件。
异常显示C:\CSharpTestFolder
目录不存在
我正在学习如何在 C# 中创建文本文件,但我遇到了问题。我使用了这段代码:
private void btnCreate_Click(object sender, EventArgs e)
{
string path = @"C:\CSharpTestFolder\Test.txt";
if (!File.Exists(path))
{
File.Create(path);
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("The first line!");
}
}
else if (File.Exists(path))
MessageBox.Show("File with this path already exists.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
当我按下 "Create" 按钮时,Visual Studio 显示错误 'System.IO.DirectoryNotFoundException',指向 "File.Create(path)"。
问题出在哪里?
异常表明您的目录 C:\CSharpTestFolder
不存在。 File.Create
将在 现有的 folder/path 中创建一个文件,它也不会创建完整路径。
您的检查 File.Exists(path)
将 return 错误,因为目录不存在,文件也不存在。您需要先在文件夹上检查 Directory.Exists
,然后创建您的目录,然后创建文件。
将您的文件操作附在try/catch
中。您不能 100% 确定 File.Exists
和 Directory.Exists
,可能还有其他过程 creating/removing 这些项目,如果您仅依靠这些检查,您可能 运行 会遇到问题.
您可以像这样创建目录:
string directoryName = Path.GetDirectoryName(path);
Directory.CreateDirectory(directoryName);
(你可以调用Directory.CreateDirectory
而不调用Directory.Exists
,如果文件夹已经存在它不会抛出异常)然后check/create 你的文件
您必须先创建目录。
string directory = @"C:\CSharpTestFolder";
if(!Directory.Exists(directory))
Directory.CreateDirectory(directory);
string path = Path.Combine(directory, "Test.txt");
if (!File.Exists(path))
{
File.Create(path);
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("The first line!");
}
}
else if (File.Exists(path))
MessageBox.Show("File with this path already exists.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
好吧,假设您的目录存在(如您所说),那么您还有另一个问题
File.Create 锁定它创建的文件,您不能以这种方式使用 StreamWriter。
相反,您需要编写
using(FileStream strm = File.Create(path))
using(StreamWriter sw = new StreamWriter(strm))
sw.WriteLine("The first line!");
然而,所有这些都不是真正必要的,除非您需要使用特定选项创建文件 (see File.Create overload list),因为如果文件不存在,StreamWriter 会自行创建文件。
// File.Create(path);
using(StreamWriter sw = new StreamWriter(path))
sw.WriteLine("Text");
...或全部在一条线上
File.WriteAllText(path, "The first line");
试试这个。
string path = @"C:\CSharpTestFolder";
if (Directory.Exists(path))
{
File.AppendAllText(path + "\Test.txt", "The first line");
}
else
{
Directory.CreateDirectory(path);
File.AppendAllText(path + "\Test.txt", "The first line");
}
File.AppendAllText(path, text)
方法如果不存在则创建一个文本文件;追加文本并关闭文件。
如果文件已经存在,它将打开文件并向其追加文本,然后关闭文件。
异常显示C:\CSharpTestFolder
目录不存在