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

java创建临时file对象 file创建临时文件_Text

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

                          

java创建临时file对象 file创建临时文件_临时文件_02

     

java创建临时file对象 file创建临时文件_文本文件_03

(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);
      }
}