用Directory.Move移动文件夹改名是报错路径拒绝访问,但是其他的文件夹可以这样操作

tangchengn 2010-07-26 10:54:44
private void GetStarImage(string newFileName, string oldFileName)
{
StreamWriter sw = new StreamWriter(pathFile + "ImageHelp\\mingxingtup\\" + newFileName + ".txt", false, Encoding.GetEncoding("GBK"));
string fullPath = pathFile + "xml\\pic\\" + oldFileName;
if (!Directory.Exists(fullPath)) fullPath = pathFile + "xml\\pic\\" +newFileName;
string[] allOldFolder = Directory.GetDirectories(fullPath);
int i = 1;
foreach (string oldFolder in allOldFolder)
{
ModifyFileName(new DirectoryInfo(oldFolder+"\\240x320"));//先改文件名
string[] allOldFile = Directory.GetFiles(oldFolder + "\\240x320");
foreach (string oldFile in allOldFile)
{
string fileName = TakeFileName(oldFile);
if (fileName.Substring(fileName.Length - 1) != "r")
{
if (checkFile(oldFile))
{
ThumbnailImage(oldFile, oldFile.Substring(0, oldFile.LastIndexOf(".")) + "r.dat");//如果图片没有缩放,就进行缩放
}
}
}
//文件夹改名
string folderName =Regex.Replace(oldFolder.Substring(oldFolder.LastIndexOf("\\") + 1),"\\d","");
sw.Write(folderName + "-" + newFileName + i);//宠物趣图-chongwuqutu1
string newfolder = fullPath + "\\" + newFileName + i;//新文件名
if (!Directory.Exists(newfolder))//文件不存在替换
{
Directory.Move(oldFolder, newfolder);//替换文件夹
}
i++;
}
sw.Close();
sw.Dispose();
if (!Directory.Exists(pathFile + "xml\\pic\\" + newFileName)) Directory.Move(fullPath, pathFile + "xml\\pic\\" + newFileName);
}
...全文
914 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveSoftandhxy 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tangchengn 的回复:]
我试了下,把文件夹放到程序外面就可以, 但是我音乐文件夹时候也是放到项目里面改的,为什么就该图片文件夹就不行,非要放到程序外面呢
[/Quote]

程序一般在运行的过程中,对所有文件应该都是只读的。。
这个时候放在同一个目录下时,不启动程序没有问题,但是启动程序就被占用。。。
我音乐文件夹时候也是放到项目里面 这个应该是程序运行的过程中,没有去访问它吧。
而现在这个目录文件夹一直需要被你或者其它所访问
tangchengn 2010-07-26
  • 打赏
  • 举报
回复
嗯,好的,谢谢,我试试
捷哥1999 2010-07-26
  • 打赏
  • 举报
回复
用这个方法试试看?更加简单一点!
先添加引用:Microsoft.VisualBasic,再加上using Microsoft.VisualBasic.Devices;
就下面两行
Computer MyComputer = new Computer();
MyComputer.FileSystem.RenameFile(FileName, newFileName);


其中FileName是你所要重命名的文件的全路径,newFileName仅仅是目标文件名;
tangchengn 2010-07-26
  • 打赏
  • 举报
回复
开始我也想过权限的问题,但是同目录下其他文件夹可以移动
Ghost_Khz 2010-07-26
  • 打赏
  • 举报
回复
看下是不是权限问题?
tangchengn 2010-07-26
  • 打赏
  • 举报
回复
我试了下,把文件夹放到程序外面就可以, 但是我音乐文件夹时候也是放到项目里面改的,为什么就该图片文件夹就不行,非要放到程序外面呢
tangchengn 2010-07-26
  • 打赏
  • 举报
回复
这“E:\Project\ASPNET\WriteXMLWeb\xml\pic\港台明星\10王绍伟”是一个目录名? 是的,你说的哪个 Computer 类里面有该目录名的
myComputer.FileSystem.RenameDirectory(oldFolder, newFileName + i);
loveSoftandhxy 2010-07-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tangchengn 的回复:]
3 楼的大哥,那个还是不能改

“/WriteXMLWeb”应用程序中的服务器错误。
--------------------------------------------------------------------------------

对路径“E:\Project\ASPNET\WriteXMLWeb\xml\pic\港台明星\10王绍伟”的访问被拒绝。
说明: 执行……
[/Quote]



那就做个简单的测试,就做文件移动,看行不行,一般手动可以,那就没有问题的。除非别的地方在程序中有对文件夹的操作导致。。
最好不好和程序一个目录。。。。。
捷哥1999 2010-07-26
  • 打赏
  • 举报
回复
这“E:\Project\ASPNET\WriteXMLWeb\xml\pic\港台明星\10王绍伟”是一个目录名?
tangchengn 2010-07-26
  • 打赏
  • 举报
回复
3 楼的大哥,那个还是不能改

“/WriteXMLWeb”应用程序中的服务器错误。
--------------------------------------------------------------------------------

对路径“E:\Project\ASPNET\WriteXMLWeb\xml\pic\港台明星\10王绍伟”的访问被拒绝。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

不用程序,手动可以改
tangchengn 2010-07-26
  • 打赏
  • 举报
回复
在电脑上面可以直接操作,只是一运行程序,那个就不能改了,
nyq1999 2010-07-26
  • 打赏
  • 举报
回复
具体报错是什么?与同目录文件夹对比权限,另外看看是否是只读,如果是web程序最好对该文件夹加上network service的角色修改权限
loveSoftandhxy 2010-07-26
  • 打赏
  • 举报
回复
最简单的,你尝试下移动文件夹改名时,在计算上直接操作。不用代码。看看是不是访问也被拒绝。
如果拒绝,说明本身文件夹存在冲突,拒绝访问。

一般都是这样的情况引起的。结束一些占用的进程等

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧