首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Directory.GetFiles或DirectoryInfo.GetFiles返回空列表

Directory.GetFiles或DirectoryInfo.GetFiles返回空列表
EN

Stack Overflow用户
提问于 2015-07-13 09:49:31
回答 1查看 2.2K关注 0票数 0

在ASP.NET应用程序执行过程中,我发现了一些奇怪的行为。如果我将workingFolder (参见下面的代码)设置为System.IO.Path.GetTempPath或任何其他公用文件夹(当前情况),这并不重要。

我收到一个ZIP文件,解压缩该文件(使用SharpZipLib)并尝试消化该文件夹中的文件,但是System.IO GetFiles返回一个空列表。我尝试使用DirectoryInfo.GetFilesDirectory.GetFiles:都是空列表。如果我在Directory.Delete上断点并查看我可以看到的文件夹,它们就不会被锁定,而且我可以对文件做任何事情--即使我在foreach no开头设置了"run游标“点-- GetFiles仍然返回一个空列表(尽管我可以在资源管理器中看到这些文件)。

代码语言:javascript
复制
    private const string EXTENSION_LOG_FILE = ".txt";
    private const string VALID_EXTENSION_MASK = "*." + EXTENSION_LOG_FILE;

                var zipFolder = unpackZip(filePath, workingFolder);
            foreach (var zipFileInfo in new DirectoryInfo(zipFolder).GetFiles(VALID_EXTENSION_MASK, SearchOption.TopDirectoryOnly))
            {
                // never get's here
                value.AddRange(getLogItems(zipFileInfo.FullName));
                File.Delete(zipFileInfo.FullName);
            }
            // this fails: folder is not empty
            Directory.Delete(zipFolder);

unpackZip方法:

代码语言:javascript
复制
private static string unpackZip(string zipFile, string workingFolder)
    {
        // doesn't matter what name I use, GUID or no GUID the GetFiles still returns an empty lists
        var tempFolder = Path.Combine(workingFolder, Guid.NewGuid().ToString()); 
        Directory.CreateDirectory(tempFolder);

        using (var unzipStream = new ZipInputStream(File.OpenRead(zipFile)))
        {
            ZipEntry entry;
            while ((entry = unzipStream.GetNextEntry()) != null)
            {
                var fileName = Path.GetFileName(entry.Name);
                if (fileName == string.Empty) continue;

                using (var streamWriter = File.Create(Path.Combine(tempFolder, Path.GetFileName(entry.Name))))
                {
                    var size = 2048;
                    var data = new byte[2048];
                    while (size > 0)
                    {
                        size = unzipStream.Read(data, 0, data.Length);
                        streamWriter.Write(data, 0, size);
                    }
                }
            }
        }
        return tempFolder;
    }

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-13 09:54:20

我在private const string VALID_EXTENSION_MASK = "*." + EXTENSION_LOG_FILE;中猜到的问题,因为EXTENSION_LOG_FILE = ".txt"反悔了*..txt

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31380184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档