对不同Windows版本的大文件名(压缩)进行编程截断

本文关键字:压缩 编程 文件名 Windows 版本 | 更新日期: 2023-09-27 18:05:44

因此,我正在修复一个允许用户创建Excel文档的程序,该程序在服务于客户之前首先对其进行压缩。客户抱怨的一个问题是,虽然zip文件总是可以下载的,但有时用户必须在使用标准的Windows压缩工具打开之前,将Excel文件从存档中复制出来(或提取出来)。标准"文件名太长"错误。

当然,算法是将.zip存档名称设置为与报告相同的名称-可以是100个字符以上的长字符串。

我正在实现的解决方案是检查潜在报告的长度,看看它是否违反MAX_PATH,并根据需要截断.zip名称。

在Windows 7上测试,效果很好。但是在8.1

下进行测试时,会发生一些奇怪的事情

它仍然抛出一个错误,试图从存档打开-但这个错误有点神秘。

"对不起,我们找不到C:'Users{我的用户名}'AppData'Local'Temp'Temp1_{剩余的截断的存档名}.zip{完整的文件名}.xlsx。"它是否可能被移动、重命名或删除?"

无论文件是"打开"还是"保存",这个错误都会弹出。

通常情况下,我只是尝试进一步调整,但在Windows 8.1平台上测试涉及到很多开销,它看起来不像问题是路径名长度。

怎么回事?Windows 8是否有档案中名称长度的问题,或者…?

另外,我之所以在这里发布这篇文章,而不是用户体验,是因为我觉得解决方案将是程序化的——在程序的代码中。我很乐意承认"允许最终用户跳过点击提取按钮"是为了提供一种简单的用户体验,但是截断整个路径的长度在Windows 7上解决了这个问题。

只是没有8.1,谷歌/搜索SO网站族没有提供任何帮助-讽刺的是,因为关键字Excel。

对不同Windows版本的大文件名(压缩)进行编程截断

所以,正如我在上面的链接(http://answers.microsoft.com/en-us/office/forum/office_2013_release-excel/sorry-unable-to-find/595333d0-1463-499f-967e-4da8ac2e2047?auth=1)中发现的那样,关键似乎是,虽然MAX_PATH是260个字符,但Excel 2013无法处理超过212个字符的任何内容。

我还没有能够给这个严格的测试它应得的,但如果其他人遇到这个问题,并发现这个页面在他们寻求修复,只要截断,直到整个路径是212,你应该很好。