建立临时文件

当用户在程序中建立一个文件,但是尚未保存和赋予名称时,所建立的文件是被保存在内存中的,显然这样很危险。如果由于突然死机或者其它原因造成了程序在未保存之前就关闭了,那么损失将非常严重。如果在文件建立时同时就在磁盘中存储数据,将不会造成这样的损失。这时需要一个临时文件来保存数据。本例将介绍如何建立临时文件来存储数据,其结果如下图所示:

1、技术要点

(1)用path类提供的静态方法GetTempFileName能够获取和创建一个临时文件。该方法和语法格式如下:

Public static string GetTempFileName()

返回值:临时文件完全路径。

(2)C# 文件类中 File ,FileInfo 类的主要区别

System.IO命名空间中提供的文件操作类有File和FileInfo,这两个类的功能基本相同,只是File是静态类,其中所有方法都是静态的,可以通过类名直接调用,不需要实例化。而FileInfo是普通类,只有实例化对象后才可以调用其中的方法。

比如:复制一个文件到另外一个地方:

File.Copy(filePath,newFilePath)就可以。

如果用FileInfo,可能需要:

FileInof fi = new FileInfo();

fi.CopyTo(newFilePath);

2、界面设计

(1)创建一个项目,将其命名为GetTempFile,默认窗体为Form1.

(2)在Form1窗体中添加2个Button控件分别用于保存文件和关闭窗体,添加1个RichTextBox控件用于输入内容,

(3)添加1个TextBox控件用于显示文件路径,并设置属性“Eabled”为false,即不可编辑模式。

(4)添加1个timer控件,作用设置每隔一段时间保存一下,设置属性“Interval”间隔时间为30000,30秒。

3、代码编辑

(1)声明变量:

public partial class Form1 : Form

{

   string TempFileName = Path.GetTempFileName();//声明一个临时文件路径名

   string OfficialFileName = "";               //声明一个正式文件名为空

(2)保存按钮事件:

private void btnSave_Click(object sender, EventArgs e)

{

   textBox1.Text = TempFileName;

   FileInfo fin = new FileInfo(textBox1.Text);//创建一个文件

   StreamWriter sw = fin.CreateText();  //fileinfo.CreateText(),创建写入新文本文件的 StreamWriter

   sw.Write(richTextBox1.Text);                 //将richTextBox1的内容写入sw中

   sw.Close();                                   //关闭

}

启动运行程序,输入内容“123456”,选择【保存】,临时文件保存路径C:\Users\Administrator\AppData\Local\Temp

                               

  (3)关闭按钮事件:

private void btnClose_Click(object sender, EventArgs e)

{

  if (File.Exists(TempFileName))

  {

   File.Delete(TempFileName);//如果临时文件存在,则删除临时文件

   }

    Close();                //如果临时文件不存在,直接关闭窗口

 }

(4)计时器事件:

private void timer1_Tick(object sender, EventArgs e)

{

   textBox1.Text = TempFileName;

   FileInfo fin = new FileInfo(textBox1.Text);

   StreamWriter sw = fin.CreateText();          //将文本写入文件

   sw.Write(richTextBox1.Text);                 //写入信息

   sw.Close();

 }

4、扩展:保存为正式文件,则将保存按钮事件改为如下所示:

private void btnSave_Click(object sender, EventArgs e)

{

textBox1.Text = TempFileName;

   FileInfo fin = new FileInfo(textBox1.Text);//创建一个文件

   StreamWriter sw = fin.CreateText();  //fileinfo.CreateText(),创建写入新文本文件的 StreamWriter

   sw.Write(richTextBox1.Text);                 //将richTextBox1的内容写入sw中

   sw.Close();                                   //关闭

 

 

 if (OfficialFileName == "")       //将临时文件保存到正式文件中

    {

    SaveFileDialog sdb = new SaveFileDialog();

    sdb.Filter = "文本文件(*.txt)|*.txt";

    sdb.FileName = "我的文本文件";

     if (sdb.ShowDialog() == DialogResult.OK)

     {

       File.Copy(TempFileName, sdb.FileName); //将临时文件保存到正式文件中

       OfficialFileName = sdb.FileName;

     }

      }

      else

      {

       File.Copy(TempFileName, OfficialFileName);

      }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人自动化控制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值