Я пытаюсь создать приложение на c #, которое будет перечислять все файлы с плюсом некоторой информации, будет перечислять все файлы или папки, содержащие недопустимые символы в имени или имеющие слишком длинный путь.с этим кодом
private void preCheckUploadToolStripMenuItem_Click(object sender, EventArgs e)
{
FolderBrowserDialog selFolder = new FolderBrowserDialog();
selFolder.Description = "Select a folder";
var selFolderResponse = selFolder.ShowDialog();
if (selFolderResponse != DialogResult.OK)
{
return;
}
logFile = selFolderName;
try
{
createList(selFolder.SelectedPath);
}
catch (System.Exception ex)
{
WriteLog(logFile , "error;" + ex.Message );
}
}
private void createList(string sDir)
{
try
{
var filesInDir = Directory.GetFiles(sDir);
foreach (string f in filesInDir)
{
WriteLog(logFile, "ok;" + f);
}
}
catch (ArgumentException aexc)
{
WriteLog(logFile, "error;" + aexc.Message + sDir);
}
catch (PathTooLongException pexc)
{
WriteLog(logFile", "error;" + pexc.Message + sDir);
}
finally
{
foreach (string d in Directory.EnumerateDirectories(sDir))
try
{
Application.DoEvents();
createList(d);
}
catch (System.Exception excpt)
{
WriteLog(logFile, "error;" + excpt.Message + ";the whole folder will be skipped;" + sDir);
}
}
}
на Directory.GetFiles(sDir)
Я получаю ошибку ArgumentException
с недопустимыми символами в пути, и она пропускает всю папку.Я не могу перечислить файлы, которые содержат недопустимые символы.Я также попытался
try
{
foreach (string f in Directory.EnumerateFiles(sDir))
{
WriteLog(logFile, "ok;" + f);
}
catch( exception)
{
}
Здесь я получаю список только до действительных файлов, но, когда он сталкивается с ошибкой, он пропускает оставшуюся часть папки, и я также не могу получить имя файла, содержащее недопустимые символы.