C# 中的 File.WriteAllText() 语句不创建文件
Posted
技术标签:
【中文标题】C# 中的 File.WriteAllText() 语句不创建文件【英文标题】:File.WriteAllText() statement in C# not creating a file 【发布时间】:2016-07-06 08:52:54 【问题描述】:我仍然只是在 Visual Studio 中学习 C#,我正在尝试制作一个简单的文本加密应用程序。我目前的问题是当我使用命令时:
File.WriteAllText(name, inputTextBox.Text);
(其中 name 是在 SaveFileDialog 中选择的文件的名称,而 inputTextBox.Text 是主窗体上文本框中的文本) 但是该文件从未真正创建。我什至尝试构建应用程序并以管理员身份运行它,但什么也没发生。
更奇怪的是,当我打开文件资源管理器时,在它显示最近文件的快速访问部分中,所有应该创建的文件都显示在那里,但当我单击“打开文件位置”时不存在如果我只是尝试打开它们,记事本只会告诉我文件不存在。
这些文件也不在我的回收站或任何东西中。 这是我的其余代码,以防出现问题:
public Form1()
InitializeComponent();
private void saveButton_Click(object sender, EventArgs e)
saveDialog.ShowDialog();
private void saveDialog_FileOk(object sender, CancelEventArgs e)
string name = saveDialog.FileName;
File.WriteAllText(name, inputTextBox.Text);
如果您想知道 saveDialog 已经是我表单中的一个元素,那么这没有问题。
【问题讨论】:
你注册了事件处理器saveDialog_FileOk
吗?
当您在saveDialog_FileOk
中设置断点时,它会停止吗?关于name
,它告诉你什么?
@Mong 不,它甚至没有注册 FileOk 事件。
@TacoMakerMan 即使您已经注册了活动,它也不会停止?=!你能把你注册的地方和方式的代码贴出来吗?
@MongZhu 我不太清楚你的意思,但我只是通过从教程中输入它来添加它,但使用我的 SaveFileDialog 的名称。
【参考方案1】:
由于在您发布的代码中缺少 SaveFileDialog
的初始化,并且您在评论中说调试器不会在事件主体中停止,我认为该事件未正确注册。
尝试确保您的课程(至少)类似于以下示例:
public partial class Form1 : Form
SaveFileDialog saveDialog;
public Form1()
InitializeComponent();
// create instance of SaveFileDialog
saveDialog = new SaveFileDialog();
// registration of the event
saveDialog.FileOk += SaveDialog_FileOk;
private void saveButton_Click(object sender, EventArgs e)
saveDialog.ShowDialog();
private void saveDialog_FileOk(object sender, CancelEventArgs e)
string name = saveDialog.FileName;
File.WriteAllText(name, inputTextBox.Text);
如果您的问题仍然存在,那么我将删除我的答案
【讨论】:
我删除了我的“saveDialog_FileOk”私人空白,并通过双击我实际表单上的事件添加它,这似乎有效。事实证明它比我想象的要简单得多,但是谢谢:) 有时是:)以上是关于C# 中的 File.WriteAllText() 语句不创建文件的主要内容,如果未能解决你的问题,请参考以下文章
首先在 StringBuilder 中存储的 File.AppendText 或 File.WriteAllText 消耗的资源更少,速度更快?