• XSS.stack #1 – первый литературный журнал от юзеров форума

[C#] файл вроде копируется на флешку, но не отображается там

Ags1of

RAM
Пользователь
Регистрация
26.11.2021
Сообщения
122
Реакции
1
C#:
        public static void USBSearcher()
        {
            Console.Write("Add Path: ");
            string PATH = Console.ReadLine();
            
            while (true)
            {
                Thread.Sleep(2000);
                foreach (var dInfo in DriveInfo.GetDrives())
                {
                    if (dInfo.IsReady && dInfo.DriveType == DriveType.Removable)
                    {
                        Console.WriteLine(dInfo);
                        string USBPath = dInfo.ToString();
                        try
                        {
                            string outFile = Path.Combine(dInfo.RootDirectory.ToString(), PATH);
                            File.Move(PATH, outFile);
                            Console.WriteLine("Yes");
                        }
                        catch
                        {
                            Console.WriteLine("No");
                        }
                        
                    }
                    else
                    {
                        Console.WriteLine("No");
                        continue;
                    }
                }

            }

        }
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Отладчик в помощь.
В данном случае есть 2 кейса.
1) Путь к файлу для перемещения (у вас File.Move используется) относительный
2) Путь к файлу для перемещения абсолютный

Рассмотрим 1 случай. Мы получим outFile = "<disk>:\\<filename>". Тут всё верно. Копирование произойдет в корень съемного накопителя.
Рассмотрим 2 случай.
string outFile = Path.Combine(dInfo.RootDirectory.ToString(), PATH);
В Path.Combine попадет что-то типа "E:\\" и "C:\\....\\file".
Читайте комментарий из доки: https://docs.microsoft.com/ru-ru/dotnet/api/system.io.path.combine?view=net-6.0

В вашем случае стоит более подробно рассмотреть 2 случай.
Во-первых, нужно контролировать какой путь Вы передаёте. Абсолютный или относительный?
Во-вторых, Определитесь, нужно ли вам полное дерево каталогов до этого файла?
Если не нужно, то сделать так:
C#:
string filename = USBPath + Path.GetFileName(PATH);
File.Move(PATH, filename);

Так вы будете получать такой же путь, что и в 1 случае.
 
while (true)
Зачем тебе бесконечный цикл?
Сделай лучше по нормальному, повесь обработчик подключения usb флешек через WndProc и чекай.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх