2015-07-13 2 views
0

У меня странное поведение во время выполнения в приложении ASP.NET. Не имеет значения, если я установил workingFolder (см. Код ниже) на System.IO.Path.GetTempPath или любую другую общую папку (текущий регистр).Directory.GetFiles или DirectoryInfo.GetFiles возвращает пустой список

Я получаю ZIP-файл, распаковываю этот файл (используя SharpZipLib) и пытаюсь переварить файлы в этой папке, но System.IO GetFiles возвращает пустой список. Я пытался использовать DirectoryInfo.GetFiles и Directory.GetFiles: и пустой список. Если точка останова на Directory.Delete и посмотреть на папку, я вижу файлы, они не заблокированы, и я могу делать что-либо с файлами - даже если бы я установил точку «run from cursor» в начале foreach no luck - GetFiles по-прежнему возвращает пустой список (хотя я могу видеть файлы в проводнике).

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:

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; 
    } 

какие-либо предложения?

+3

Это 'VALID_EXTENSION_MASK = "*." + EXTENSION_LOG_FILE' приведет к двойному «.»: '* .. txt' –

ответ

0

Проблема, которую я догадался, в private const string VALID_EXTENSION_MASK = "*." + EXTENSION_LOG_FILE; Retruns *..txt потому EXTENSION_LOG_FILE = ".txt"

+0

wow - как глупо я могу быть ... – Leon

Смежные вопросы