Проблема с копированием файлов в C # формат заданного пути не поддерживается

#c# #winforms #file-copying

#c# #winforms #копирование файлов

Вопрос:

Вот мой код для копирования файла из одного локального расположения в другое и воспроизведения его в winforms с помощью проигрывателя Windows Media.

Я получаю исключение «Формат заданного пути не поддерживается». во время копирования файла.

Кажется, я не могу понять проблему. Кто-нибудь может помочь? Заранее спасибо.

 Value of exepath variable- "file:C:UsersHPsourcereposTestProjectTestProjectbinDebug"

Value of vdopath variable- "file:C:UsersHPsourcereposTestProjectTestProjectbinDebugFolder1Folder2file"

Value of strtupPath- "C:UsersHPsourcereposTestProjectTestProjectbin"

Value of newvdopath- "C:UsersHPsourcereposTestProjectTestProjectbinvdofile.mkv"
  
    using System.Collections.Generic;
   using System.ComponentModel;
   using System.Data;
   using System.Drawing;
   using System.Linq;
   using System.Text;
   using System.Threading.Tasks;
   using System.Windows.Forms;
   using WMPLib;
   using System.IO;

   namespace TestProject
   {
       public partial class vdo_form_tmplt1 : Form
       {
           public vdo_form_tmplt1()
           {
              InitializeComponent();
           }

           private void PlayVideo_Click(object sender, EventArgs e)
           {
            
               string exepath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);

               string vdopath = System.IO.Path.Combine(exepath, "Folder1\Folder2\file");

               string strtupPath = System.IO.Path.GetDirectoryName(Application.StartupPath);

               string newvdopath = System.IO.Path.Combine(strtupPath, "vdofile.mkv");

               System.IO.File.Copy(vdopath, newvdopath);

               axWindowsMediaPlayer1.stretchToFit = true;
               axWindowsMediaPlayer1.URL = newvdopath;
           }

       }
   }
  

Комментарии:

1. string vdopath = Path.Combine(Application.StartupPath, "Folder1\Folder2\file"); string newvdopath = Path.Combine(Application.StartupPath, "vdofile.mkv"); . Обратите внимание, что если ваше приложение установлено в Program Files , есть хорошее изменение, вы не можете создать файл по этому пути. Рассмотрите возможность работы с Application.CommonAppDataPath , Application.LocalUserAppDataPath или его перемещаемым аналогом.

2. Также подумайте о добавлении using System.IO; директивы поверх вашего класса.

3. Большое спасибо. Использование приложения. StartupPath вместо exepath решил проблему 🙂