У меня странное поведение во время выполнения в приложении 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;
}
какие-либо предложения?
Это 'VALID_EXTENSION_MASK = "*." + EXTENSION_LOG_FILE' приведет к двойному «.»: '* .. txt' –