Скопируйте файл, используя относительный путь - PullRequest
0 голосов
/ 03 июля 2018
File.Copy(@"my program\\subfolder\\what i want to copy.txt", "C:\\Targetlocation");

Как скопировать текстовый файл из одной папки в другую, используя относительный путь.

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

Вы можете указать относительный путь из вашего текущего рабочего каталога, который можно проверить с помощью Environment.CurrentDirectoy.

Например, если текущим рабочим каталогом является D: \ App, местоположение исходного файла - D: \ App \ Res \ Source.txt, а целевое расположение - D: \ App \ Res \ Test \ target.txt, тогда ваш фрагмент кода будет -

File.Copy(Res\\Source.txt, Res\\Test\\target.txt); 
0 голосов
/ 03 июля 2018
// Remove path from the file name.
    string fName = f.Substring(sourceDir.Length + 1);

    try
    {
        // Will not overwrite if the destination file already exists.
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
    }
0 голосов
/ 03 июля 2018

Для выполнения File.Copy источником и местом назначения будет допустимый путь к файлу. в вашем случае это папка, а не файл. в этом случае вы можете получить исключение, например

Не удалось найти часть пути 'F: \ Новая папка'

При выполнении приложения текущим каталогом будет папка bin. вам нужно указать относительный путь оттуда. Пусть my program/subfolder будет папками в вашем решении, поэтому код для этого будет выглядеть так:

string sourcePath = "../../my program/subfolder/what i want to copy.txt";
string destinationPath = @"C:\Targetlocation\copyFile.txt"
File.Copy(sourcePath, destinationPath );

Где ../ поможет вам вернуться на шаг назад от текущего каталога. Еще одна вещь, о которой вам нужно позаботиться, это третий необязательный параметр в методе File.Copy. Передав true для этого параметра, вы сможете перезаписать содержимое существующего файла. Также убедитесь, что папка C:\Targetlocation существует, так как это не создаст папку для вас.

0 голосов
/ 03 июля 2018
File.Copy(@"subfolder\\what i want to copy.txt", "C:\\Targetlocation\\TargetFilePath.txt");

Параметры sourceFileName и destFileName могут указывать относительные или информация об абсолютном пути. Информация об относительном пути интерпретируется как относительно текущего рабочего каталога. Этот метод не поддержка подстановочных знаков в параметрах.

File.Copy на MSDN

Убедитесь, что ваш целевой каталог существует. Вы можете использовать Directory.CreateDirectory

Directory.CreateDirectory("C:\\Targetlocation");

С Directory.CreateDirectory() вам не нужно проверять, существует ли каталог. Из документации:

Любые и все каталоги, указанные в path, создаются, если они уже существует или если какая-то часть пути недопустима. Путь Параметр указывает путь к каталогу, а не путь к файлу. Если каталог уже существует, этот метод ничего не делает.

...