我弄了个 创建文件 删除文件 重命名文件 打开文件的程序,当我创建一个文件以后 要删除这个文件 就会提示 当前要删除的文件正由另一进程使用。但是我删除别的文件就可以。其它的同理。现在可能就需要价格结束进程,我不知道怎么弄!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;namespace FileProject
{
    public partial class frmMain : Form
    {
        string m_Address = @"f:\files";
        public frmMain()
        {
            InitializeComponent();
            
        }        private void frmMain_Load(object sender, EventArgs e)
        {
            FillList();
        }
        
        private void FillList()
        {
            
            
            istFile.Clear();//清除istFile的当前内容
            //使用foreach遍历指定路径下的所有文件
            foreach(string m_FileName in Directory.GetFiles(m_Address))
            {
                //对获得的文件名进行处理,使其包含文件名和后缀名
                string m_Name = m_FileName.Substring(m_Address.Length + 1, m_FileName.Length - m_Address.Length - 1);
                ListViewItem m_item = istFile.Items.Add(m_Name);//将文件名显示到istFile中
                m_item.ImageIndex = 0;//设置ListViewitem的显示图标
            }
            return;
        }        private void btnCreate_Click(object sender, EventArgs e)
        {
            if (txtName.Text.Trim() == string.Empty) return;//若txtName文本框中的内容为空,则不进行任何操作
            string m_Path = m_Address + @"\" + txtName.Text.Trim();//生成所需创建文件的绝对路径
            FileInfo m_FileInfo = new FileInfo(m_Path);//使用FileInfo类创建指定的文件
            m_FileInfo.Create();
            FillList();//刷新istFile列表,使其内容与指定文件夹中的内容保持同步
            return;
        }        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (istFile.SelectedItems.Count < 1) return;//若istfile中选中的内容为空,则不进行任何操作
            //使用foreach遍历指定选中的所有文件
            foreach (ListViewItem m_Item in istFile.SelectedItems)
            {
                //生成所需创建文件的绝对路径并删除
                string m_Path = m_Address + @"\" + m_Item.Text;
                File.Delete(m_Path);
            }
            FillList();//刷新istFile,使其内容与指定文件夹中的内容保持同步
            return;
        }        private void btnRename_Click(object sender, EventArgs e)
        {
            //若istfile中选中的文件个数不等于1,则不进行任何操作
            if (istFile.SelectedItems.Count != 1) return;
            //生成原文件的绝对路径
            string m_PathOld = m_Address + @"\" + istFile.SelectedItems[0].Text;
            //生成新文件的绝对路径
            string m_PathNew = m_Address + @"\" + txtName.Text.Trim();
            //判断当前目录下是否已存在同名文件
            if (File.Exists(m_PathNew))
            {
                MessageBox.Show("已存在同名文件!");
                return;
            }
            else
            {
                //重命名文件
                FileInfo m_FileInfo = new FileInfo(m_PathOld);
                m_FileInfo.MoveTo(m_PathNew);
                //刷新istFile,使其内容与指定文件夹中的内容保持同步
                FillList();
                return;
            }
        }        private void istFile_DoubleClick(object sender, EventArgs e)
        {
            //若istFile中选中的文件个数不等于1,则步进行任何操作
            if (istFile.SelectedItems.Count != 1) return;
            //初始化一个Process类的实例
            Process m_Process = new Process();
            //生成所需打开文件的绝对路径并将其StartInfo的FileName属性设置为此路径
            string m_Path = m_Address + @"\" + istFile.SelectedItems[0].Text;
            m_Process.StartInfo.FileName = m_Path;
            //尝试打开指定的文件并对已成进行处理
            try
            {
                m_Process.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return;
        }        
    }
}

解决方案 »

  1.   

    没有打开啊,比如:文件夹files里原来就有个2.txt,现在我新创建个3.txt,在不关闭窗口的情况下,删除3.txt就会弹出对话框提示:文件“f:\files\3.txt”正由另一进程使用,因此该进程无法访问该文件。(对话框的名字是:未处理IOException)
      

  2.   

                
    FileStream fs = m_FileInfo.Create();
    fs.Close();
    试下
      

  3.   

    FileStream fs = m_FileInfo.Create();
    fs.Close();
    正解
      

  4.   

    不好意思  我加这里试了试,还是提示那个 private void btnCreate_Click(object sender, EventArgs e)
            {
                if (txtName.Text.Trim() == string.Empty) return;  //若txtName文本框中的内容为空,则不进行任何操作    
                string m_Path = m_Address + @"\" + txtName.Text.Trim(); //生成所需创建文件的绝对路径    
                FileInfo m_FileInfo = new FileInfo(m_Path);  //使用FileInfo类创建指定的文件
                m_FileInfo.Create();
                FillList(); //刷新【lstFile】列表,使其内容与指定文件夹中的内容保持同步
                return;
                FileStream fs = m_FileInfo.Create();
                fs.Close();
            }
      

  5.   

    你都return了肯定不会走FileStream fs = m_FileInfo.Create(); 
                fs.Close(); 这两句了,return放后面
      

  6.   

    private void btnDelete_Click(object sender, EventArgs e) 
            { 
                if (istFile.SelectedItems.Count < 1) return;//若istfile中选中的内容为空,则不进行任何操作 
                //使用foreach遍历指定选中的所有文件 
                foreach (ListViewItem m_Item in istFile.SelectedItems) 
                { 
                    //生成所需创建文件的绝对路径并删除 
                    string m_Path = m_Address + @"\" + m_Item.Text; 
    请在这里看看你的文件路径是什么?
    请在这里判断文件是否被打开?
                    File.Delete(m_Path); 
                } 
                FillList();//刷新istFile,使其内容与指定文件夹中的内容保持同步 
                return; 
            } 
    如果上面的都没有问题,请将你的删除文件路径写一个你没有打开的文件,看是否可以?
    如果可以,请检查你生成文件的函数是否有问题!
    基本上就这么多了。
      

  7.   

    放后面试了   FileStream fs = m_FileInfo.Create(); 这句变黄色背景。提示:文件XXX正由另一进程使用,因此该进程无法访问该文件。
      

  8.   

    放后面试了   FileStream fs = m_FileInfo.Create(); 这句变黄色背景。提示:文件XXX正由另一进程使用,因此该进程无法访问该文件。
      

  9.   

    放后面试了   FileStream fs = m_FileInfo.Create(); 这句变黄色背景。提示:文件XXX正由另一进程使用,因此该进程无法访问该文件。
      

  10.   

    FileStream fs = m_FileInfo.Create();
      fs.Close();
    我知道了,把上面这两句放在m_FileInfo.MoveTo(m_PathNew);前面!!