我写的程序是用于注册设置。 它写入文本文件很好,但我想确保如果它耗尽电源并切断(平板电脑)它将保存文档。它第一次工作但之后没有。
这是我的代码:
public void Form1_Load(object sender, EventArgs e)
{
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
textBox1.Select();
var fileSave = new FileStream(fullFileName, FileMode.Create);
fileSave.Close();
// DisableCloseButton();
}
private void textBox1_TextChanged_1(object sender, EventArgs e)
{
// SqlConnection sqlConnection1 = new SqlConnection(
// "Data Source=DATABASE;Initial Catalog=imis;Integrated Security=True");
// SqlCommand cmd = new SqlCommand();
Object returnValue;
string txtend = textBox1.Text;
try
{
string lastTwoChars = txtend.Substring(txtend.Length - 1);
returnValue = textBox1.Text.Replace(@"*", "");
if (lastTwoChars != "*") return;
{
if (listBox1.Items.Contains(returnValue))
{
for (int n = listBox1.Items.Count - 1; n >= 0; --n)
{
string removelistitem = returnValue.ToString();
if (listBox1.Items[n].ToString().Contains(removelistitem))
{
//listBox1.Items.RemoveAt(n);
}
}
}
else
listBox1.Items.Add(returnValue);
textBox1.Text = null;
System.IO.StreamWriter sw = new System.IO.StreamWriter(fullFileName);
foreach (object item in listBox1.Items)
sw.WriteLine(item.ToString());
sw.Close();
if (listBox1.Items.Count != 0)
{
DisableCloseButton();
}
else
{
EnableCloseButton();
}
label6.Text = "Currently " +
listBox1.Items.Count.ToString() + " in attendance.";
}
}
catch { }
}
答案 0 :(得分:1)
在关闭之前,您是否尝试在Stream.Flush()
上致电FileStream
?
答案 1 :(得分:1)
使用using statement确保释放所有资源。
替换
System.IO.StreamWriter sw = new System.IO.StreamWriter(fullFileName);
foreach (object item in listBox1.Items)
sw.WriteLine(item.ToString());
sw.Close();
与
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fullFileName))
{
foreach (object item in listBox1.Items)
sw.WriteLine(item.ToString());
}
答案 2 :(得分:0)
我不知道你引发问题的情景,但这一行 if(lastTwoChars!=“*”)返回; 将跳过以下逻辑,所以你可能永远不会被调用。 附:在关闭之前,你不会主动调用Flush。
答案 3 :(得分:0)
这是我的代码中的工作示例,附加在文件中。
using (StreamWriter xyz = new StreamWriter(Path.Combine(File_Path, "xyz.txt"), true, Encoding.Unicode))
{
foreach (string item in listBox1.Items)
{
xyz.WriteLine("ABC"); // or whatever you want
//xyz.WriteLine(item);
xyz.Flush();
}
}
希望这有帮助。