我弄了个 创建文件 删除文件 重命名文件 打开文件的程序,当我创建一个文件以后 要删除这个文件 就会提示 当前要删除的文件正由另一进程使用。但是我删除别的文件就可以。其它的同理。现在可能就需要价格结束进程,我不知道怎么弄!
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;
}
}
}
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;
}
}
}
FileStream fs = m_FileInfo.Create();
fs.Close();
试下
fs.Close();
正解
{
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();
}
fs.Close(); 这两句了,return放后面
{
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;
}
如果上面的都没有问题,请将你的删除文件路径写一个你没有打开的文件,看是否可以?
如果可以,请检查你生成文件的函数是否有问题!
基本上就这么多了。
fs.Close();
我知道了,把上面这两句放在m_FileInfo.MoveTo(m_PathNew);前面!!