C# 把文件和文件夹 放到回收站 (出现Unknown err (0x402) 无法删除 文件:无法读取源文件或磁盘 解决)


C#   先引用 空间  Microsoft.VisualBasic


using System;
using Microsoft.VisualBasic.FileIO;
namespace leaver
{
class Program
{  
 static void Main(string[] args)
{ 
 Console.WriteLine("删除文件到回收站");
string filepath = "leaver.txt";
FileSystem.DeleteFile(filepath, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
Console.WriteLine("删除文件完成");//keleyi.com 
 Console.WriteLine("删除文件夹到回收站");
string dirpath = "leaver";
FileSystem.DeleteDirectory(dirpath, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
Console.WriteLine("删除文件夹完成");
}
}
}
 


可能出现问题



Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(fileFolder, UIOption.AllDialogs, RecycleOption.SendToRecycleBin, UICancelOption.DoNothing);

win7x64 win7x86 win8x64均正常。

xpx86上使用它会顺次提示

1. “无法删除 文件:无法读取源文件或磁盘”

2. Unknown err (0x402)  * error的含义参看:http://msdn.microsoft.com/zh-cn/subscriptions/bb762164

未验证xpx64上的情况。

 

解决:

1. 如果使用Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory删除回收站,要去掉路径最后的反斜杠.

2.如果是DllImport了SHFileOperatioin,除了保证路径的最后不能有反斜杠,结束的部分还要多加一个'\0',据说是这个奇怪的字符数组需要由超过一个的'\0'作为结束。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值