【问题标题】:File handling: Windows XP (working) vs Windows 7 (Could not find file or part of file)文件处理:Windows XP(工作)与 Windows 7(找不到文件或文件的一部分)
【发布时间】:2014-02-23 21:30:44
【问题描述】:

我有一段代码在 Windows XP 上运行没有问题。不是我们公司已经迁移到windows 7 并且软件停止工作。解码代码本身会打开一个 zip 文件并提取内容。跟着它读取内容。

    Dim tempzip As String = "C:\ some very long path\bin\Debug\lib.zip"
    Dim tempdir As String = IO.Path.Combine(IO.Path.GetTempPath, Guid.NewGuid.ToString)
    Using zip1 As Ionic.Zip.ZipFile = Ionic.Zip.ZipFile.Read(tempzip)
        Dim e As Ionic.Zip.ZipEntry
        For Each e In zip1
            e.Extract(tempdir, Ionic.Zip.ExtractExistingFileAction.OverwriteSilently)
        Next
    End Using
    PropertiesAssembly = System.Reflection.Assembly.LoadFrom(IO.Path.Combine(tempdir, "some dll in zip-file"))

错误发生在 e.Extract 。他显然找不到压缩文件。抛出的异常是你的标准Could not find file or part of file...

Zip-文件确实存在在指定位置,并且所需的程序集存在在 zip 文件中。代码尚未更改。这只是一个检查工作的测试。

问题: windows 7 和 windows xp 在文件处理方面有区别吗? 如果不是,这种奇怪行为的原因可能是什么

【问题讨论】:

    标签: .net vb.net path zip filenotfoundexception


    【解决方案1】:

    我认为它最有可能返回不同路径的 GetTempPath 函数(Temp 文件夹确实发生了变化)。在 XP 上,路径足够短,以至于在 zip 文件中添加 Guid 的长度和文件夹名称保持在最大路径名称的限制内(我认为 256 个字符?),而在 W7 GetTempPath 返回一个更长的名称结果路径超出限制。

    这是假设 zip 文件确实存在于程序认为的位置。

    【讨论】:

    • 检查了压缩文件。它存在于定义的位置。您可能对路径长度是正确的。今天下午我将使用修复(和短)路径。
    • 大奖!确实长度确实太长了。允许的最大长度为 260 个字符。在 Xp 上它大约是 240 个字符,在 Win7 上它超过了 280 个字符......干杯伙伴
    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2012-02-02
    • 1970-01-01
    • 2020-08-21
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多