c# 操作文件夹问题,先判断是否存在这个文件夹,存在则连同子目录一同删除,然后再创建新的目录,错误:
3个回答
展开全部
"另一进程使用"的意思就是,其他地方已经有Stream读取这个文件,而且改Stream未释放Close().你这里用的是DirectoryInfo我不是特别清楚.请你检查一下有没有这种情况.
另外DirectoryInfo没有用过.不过请你做两件事情用用两个DirectoryInfo对象.if里的内容重写:
if(dirInfo.Exists)
{
dirInfo.Delete(true);
dirInfo = new DirectoryInfo(indexPath);
dirInof.Create();
}
删除的dirInfo已经占用了这个文件夹,所以先关闭这个dirInfo之后再初始化一个dirInfo
另外DirectoryInfo没有用过.不过请你做两件事情用用两个DirectoryInfo对象.if里的内容重写:
if(dirInfo.Exists)
{
dirInfo.Delete(true);
dirInfo = new DirectoryInfo(indexPath);
dirInof.Create();
}
删除的dirInfo已经占用了这个文件夹,所以先关闭这个dirInfo之后再初始化一个dirInfo
更多追问追答
追答
我重现了你的问题.
创建一个文件夹,增加一个文件,打开这个文件.然后尝试删除这个文件夹.
和你一样的错误.
_0.cfs在删除文件夹的代码执行前已经打开了.
请你检查这个文件在哪里打开.请关闭Close()!
注意是文件,不是文件夹!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static void DeleteFolder1(string dir)
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (File.Exists(d))
{
FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d);//直接删除其中的文件
}
else
DeleteFolder(d);////递归删除子文件夹
Directory.Delete(d);
}
}
以前看到过这样一个代码,你试试。
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (File.Exists(d))
{
FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d);//直接删除其中的文件
}
else
DeleteFolder(d);////递归删除子文件夹
Directory.Delete(d);
}
}
以前看到过这样一个代码,你试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要删除的文件夹里的文件被打开?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询