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() 语句不创建文件的主要内容,如果未能解决你的问题,请参考以下文章

File.WriteAllText 不将数据刷新到磁盘

首先在 StringBuilder 中存储的 File.AppendText 或 File.WriteAllText 消耗的资源更少,速度更快?

(12)C#传智:File类,泛型,字典,FileStream,StreamReader,多态

使用 C# 清除文本文件的内容

C# 保存文件 - (删除并重写?)

从后台往磁盘上写入内容