日期:2014-05-17  浏览次数:20773 次

File静态方法使用时碰到的问题

做了个小练习,发现当创建文件后在进行删除刚才创建的文件时就会出现下面的问题:

File这个静态没有dispos接口,所以就没用using方法,不知道这是什么情况,求指教
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace 创建和删除文件
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SaveFileDialog p_SaveFileDialog = new SaveFileDialog();
            if (p_SaveFileDialog.ShowDialog()==DialogResult.OK)
            {
                File.Create(p_SaveFileDialog.FileName);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog p_OpenFileDialog = new OpenFileDialog();
            if (p_OpenFileDialog.ShowDialog()==DialogResult.OK)
            {
                File.Delete(p_OpenFileDialog.FileName);
            }
        }
    }
}
C#

------解决方案--------------------
删除File.Delete没有可以,直接在弹出的对话框中选择某个文件然后删除。但是第一个创建的操作是有问题的。
首先,File.Create方法返回一个FileStream对象,这个流应该要关闭掉。你的错就是这个原因造成的。输入如下代码,就不报错了。
FileStream fs = File.Create(p_SaveFileDialog.FileName);
                fs.Close();

然后我想说的是,创建的操作应该是选择某个文件,然后把这个文件File.Copy到另外一个路径,而不是使用File.Create方法。你这样操作的话实际上就是覆盖原文件了,没有什么意义。而且对于jpg这样的图片文件,可能就不能正确的创建(即不能正确的打开)。