C#写入文件
本文关键字:文件 | 更新日期: 2023-09-27 18:26:32
我试图用C#写入一个txt文件,但我无法工作。我搜索了很多教程,但没有一个能真正帮助我解决问题。
首先,我的问题实际上是2。
1st:我使用的方法根本不起作用!
第二:根据我的应用程序的工作方式,OpenFileDialog
在单击按钮之前不会初始化。因此,我定义的save_to_file()
函数几乎没有错误(见下面的代码)
代码
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (savetofile_checkbox.Checked)
{
OpenFileDialog save_to_file = new OpenFileDialog();
save_to_file.Filter = "txt files (*.txt)|*.txt";
save_to_file.FilterIndex = 2;
save_to_file.RestoreDirectory = true;
}
}
这样做的目的是在单击复选框时选择一个文件。
这有点奇怪。当你调用函数时,它应该将文件写入文件,但save_to_file
没有定义,通常这种方式不起作用,我不知道为什么。。
public void write_to_file(string value)
{
Stream file;
file_path = save_to_file.FileName;
file_name = Path.GetFileName(file_path);
if (save_to_file.ShowDialog() == DialogResult.OK)
{
if ((file = save_to_file.OpenFile()) != null)
{
TextWriter tw = new StreamWriter(file_name.ToString());
tw.WriteLine(value);
console.AppendText(cur_time() + file_path + "'n");
console.AppendText(cur_time() + file_name + "'n");
tw.Close();
file.Close();
}
}
}
有什么方法可以让这个代码正常工作吗?
将save_to_file变量定义为本地变量
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (savetofile_checkbox.Checked) {
OpenFileDialog save_to_file = new OpenFileDialog(); //declaration
save_to_file.Filter = "txt files (*.txt)|*.txt";
save_to_file.FilterIndex = 2;
save_to_file.RestoreDirectory = true;
} //end of scope of save_to_file variable
}
如果我理解正确的话,您的代码没有编译,因为在write_to_file方法中没有定义变量save_to_file。您可以做的是将save_to_file声明为一个字段;
private OpenFileDialog save_to_file;
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (savetofile_checkbox.Checked) {
save_to_file = new OpenFileDialog(); //declaration
save_to_file.Filter = "txt files (*.txt)|*.txt";
save_to_file.FilterIndex = 2;
save_to_file.RestoreDirectory = true;
} //end of scope of save_to_file variable
}
谷歌中有很多示例代码可用于写入文本文件。为什么要使用Open dailog。。以下是的示例代码
string path = @"C:'mytesttext.txt";
string text2write = "Hello World!";
System.IO.StreamWriter writer = new System.IO.StreamWriter(path);
writer.Write(text2write);
writer.Close();