Получить название файла

197
29 августа 2017, 09:28
string[] dirs = Directory.GetFiles("G:\\", "*.az", SearchOption.AllDirectories);

Далее хочу копировать файлы

File.Copy(s1., Path.GetTempPath() + Namer, true);

Получаю ошибку

указан каталог, а не файл.

Как мне получить сам файл?

foreach (string s1 in dirs)
        {
            File.Copy(s1, Path.GetTempPath() + Namer, true);
        }

Не каких Name или FullName не доступны

Answer 1

Как-то так:

string[] fileNames = Directory.GetFiles("G:\\", "*.az", SearchOption.AllDirectories);
string newPath = "C:\\";
foreach (var fileName in fileNames)
{
    //string path = Path.GetDirectoryName(fileName);
    string name = Path.GetFileName(fileName);
    //Console.WriteLine(path);
    //Console.WriteLine(name);
    var sourceName = fileName;
    var destName = Path.Combine(newPath, name);
    File.Copy(sourceName, destName);
}

PS Код упрощённый, чисто для демонстрации Path.GetFileName и Path.Combine.

Я тут подумал: на самом деле если в папке есть две подпапки 1 и 2 и в каждой лежит 123.ag то они запишутся в одно и то же место, один пропадёт. По-хорошему нужно воссоздавать структуру каталогов.

Answer 2
Directory.EnumerateFiles("G:\\", "*.az", SearchOption.AllDirectories)
.AsParallel()
.WithDegreeOfParallelism(2)
.ForAll(d => File.Copy(d, Path.GetTempPath()+Path.GetFileName(d),true));  

.....

   string[] Drives = Environment.GetLogicalDrives();
   foreach (string drive in Drives) {
   Directory.EnumerateFiles(drive , "*.az", SearchOption.AllDirectories)
   .AsParallel()
   .WithDegreeOfParallelism(2)
   .ForAll(d => File.Copy(d, Path.GetTempPath() + Path.GetFileName(d), true));
   }

С рекурсивным поиском

string[] Drives = Environment.GetLogicalDrives();
foreach(string drive in Drives)
Search(drive);
.............
static void Search(string sDir) {
 try {
  Directory.EnumerateFiles(sDir, "*.az")
   .AsParallel()
   .WithDegreeOfParallelism(2)
   .ForAll(d => File.Copy(d, Path.GetTempPath() + Path.GetFileName(d), true));
  foreach(string path in Directory.EnumerateDirectories(sDir))
  Search(path);
 } catch (System.Exception excpt) {
  //Console.WriteLine(excpt.Message);
 }
}
READ ALSO
о принципе работы into into

о принципе работы into into

ЗдравствуйтеНе могу понять, когда именно данные сохраняются в ws ?

196
Проверка на размер файла [требует правки]

Проверка на размер файла [требует правки]

Есть код, который копирует файлыКак добавить условие на размер файлов? Если размер файла более 300 кб, то копировать не надо

180
Загрузка файлов Asp.net

Загрузка файлов Asp.net

Всем приветМне нужно реализовать загрузку файлов на сервер и сохранения пути до них в бд

265
Авторизация на сайте с использованием csrfmiddlewaretoken

Авторизация на сайте с использованием csrfmiddlewaretoken

Мне необходимо авторизоваться на сайте, и дальше работать с POST запросами, но есть проблема на сайте выдается csrfmiddlewaretokenПоэтому надо сначала...

212