Дать каждому файлу рандомное имя

170
17 августа 2018, 19:00

Создал массив с путями до файлов и создал коллекцию в которую поместил массив. Далее написал цикл, который копирует содержимое файлов и дает им рандомные имена, но цикл работает не правильно. Если нужно скопировать 3 файла и дать им рандомные имена, копируется каждый файл в один и тот же файл с одним рандомным именем. Как исправить цикл, чтобы при каждом копирование новому файлу давалось новое рандомное имя, пока цикл не закончится? P.S. Для рандомным имен использую функцию Path.GetRandomFileName(); Создал пока массив с одним путем для нового файла, но в массиве нужно знать число элементов, в моем случае я не знаю за ранее сколько элементов будет, так как List обрабатываю в цикле и удаляю несуществующие пути. Если создать строку string с "C:\\"+ Path.GetRandomFileName()+".txt" , то эффект такой же, создается только один файл.

 string[] pathlog =
            {
                "\\folder\\folder\\tets1.txt",
                "\\folder\\folder\\tets2.txt",
                "\\folder\\folder\\tets3.txt"
            };
   string locc2 = "C:\\pass.txt"; //в этот файл все записывается
  string[] locc =
            {
                $"C:\\"+ Path.GetRandomFileName()
            };
 List<string> passion = new List<string>(pathlog);
for (int i = 0; i < passion.Count; i++)
            {
                for (int n = 0; n < locc.Length; n++)
                {
                    if (!File.Exists(locc[n]))
                        File.Copy(passion[i], locc[n], true);
                    using (StreamWriter sw = File.AppendText(locc2))
                    {
                        sw.WriteLine("This");
                        sw.WriteLine("is Extra");
                        sw.WriteLine("Text");
                    }
                }
            }

P.S. Представлен только основной код, он работает ровно так как описано в вопросе. Важно, разобраться только в функции копирования с рандомным именем, пока цикл не закончится

Answer 1

Замените это

 File.Copy(passion[i], locc[n], true);

на это

 var randomFileName = $"C:\\"+ Path.GetRandomFileName();
 File.Copy(passion[i], randomFileName, true);

То есть создавайте путь к временному файлу внутри вашего цикла, а не 1 раз в начале программы.

READ ALSO
Unity. Сцена стала долго грузиться

Unity. Сцена стала долго грузиться

Всем привет! Проблема такая: 18 июня у меня сцена в мобильной игре грузилась за 1-2 секунды, а вот 30 июня сцена стала грузиться 5-6-7 секундКод почти...

152
CefSharp Не проходит reCAPTCHA

CefSharp Не проходит reCAPTCHA

Использую последнюю версию CefSharpWPF (x64 проект)

136
Как открыть другую форму в С#?

Как открыть другую форму в С#?

Форма авторизацииПри вводе правильного пароля

166
Один DbContext на всё приложение

Один DbContext на всё приложение

Во многих мануалах в интернете и в учебнике Фримена для Identity создавался отдельный контекст БД (его даже наследовать надо от специального...

186