#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 решил проблему 🙂