Windows:如何将一个路径很长的文件移到回收站?

5
我正在使用Python,但我认为在C#中存在相同的问题。
我希望能够支持扩展路径(长度大于260的路径,表示为//?/c:/blah/blah)。看起来将文件移动到回收站的标准方法是通过SHFileOperationW或SHFileOperation。
在Python中,有一个很有用的xplatform库move2trash,它使用SHFileOperationW。一些关于C#的文章说要使用相同的东西。
SHFileOperationW的问题在于它不支持扩展路径。这是SH工具的一般限制。
有人有处理回收站和扩展路径的技巧吗?
参考链接:C#版本Python版本

1
我刚刚发现了这个stackoverflow的问题,https://dev59.com/WmbWa4cB1Zd3GeqPZ7sl。正在调查看它是否有答案。 - greenhat
这是针对Windows的,对吧? - Eric O. Lebigot
实际上,任何使用Win32API的语言都会存在相同的问题。(考虑到这一点,最好使用[tag:language-agnostic]而不是随机的语言标签。) - millimoose
你能要求Vista或更高版本吗?那么你可以使用IFileOperation,它可以在任何你可以构建IShellItem的东西上工作。这可能只会导致一个更有用的错误,而不是成功,但值得一试。 - abarnert
此外,据我所知,Vista资源管理器处理这个问题的方式是将文件实际重命名为其“路径缩短”等效形式(有关背景信息,请参见此处)。然后再将其删除。(Windows XP的资源管理器不需要这样做,因为它根本不会让您看到这些文件…)。您可以在Windows XP中使用GetShortPathName更简单地完成类似的操作。 - abarnert
2个回答

0
如果您想查看一些C#解决方案,可以在Stack Overflow上快速搜索“PathTooLongException”,会出现很多讨论。您可能可以检索“短名称”并使用它来移动文件。此外,您还可以查看这个C#库中的处理方式,该库提供了一个解决方法,链接为http://bcl.codeplex.com/wikipage?title=Long%20Path

0

不行。如果文件路径超过259个字符,就无法将文件放入回收站。


1
我不认为那是完全正确的,因为你绝对可以在Vista的资源管理器中完成它。如果我没记错的话,这个功能的实现是通过使用相同的路径压缩技巧来让你在资源管理器中看到文件的。 - abarnert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接