C # Скопируйте файл в другое место с другим именем - PullRequest
50 голосов
/ 07 октября 2010

Если соблюдены определенные условия, я хочу скопировать файл из одного каталога в другой, БЕЗ удаления исходного файла.Я также хочу установить имя нового файла на определенное значение.

Я использую C # и использовал класс FileInfo.Хотя у него есть метод CopyTo.Это не дает мне возможность установить имя файла.И метод MoveTo, позволяя мне переименовать файл, удаляет файл в исходном месте.

Каков наилучший способ сделать это?

Ответы [ 10 ]

103 голосов
/ 07 октября 2010
System.IO.File.Copy(oldPathAndName, newPathAndName);
29 голосов
/ 07 октября 2010

Вы также можете попробовать метод Copy :

File.Copy(@"c:\work\foo.txt", @"c:\data\bar.txt")
9 голосов
/ 07 октября 2010

Если вы хотите использовать только класс FileInfo попробуйте это

             string oldPath = @"C:\MyFolder\Myfile.xyz";
             string newpath = @"C:\NewFolder\";
             string newFileName = "new file name";
             FileInfo f1 = new FileInfo(oldPath);
           if(f1.Exists)
             {
                if(!Directory.Exists(newpath))
                {
                    Directory.CreateDirectory(newpath); 
                }
                 f1.CopyTo(string.Format("{0}{1}{2}", newpath, newFileName, f1.Extension));
             }
9 голосов
/ 07 октября 2010

Вместо этого используйте File.Copy метод

например.

File.Copy(@"C:\oldFile.txt", @"C:\newFile.txt");

Вы можете вызывать его как угодно в newFile, и он соответственно переименует его.

4 голосов
/ 07 октября 2010

Один метод:

File.Copy(oldFilePathWithFileName, newFilePathWithFileName);

Или вы можете использовать метод FileInfo.CopyTo () тоже примерно так:

FileInfo file = new FileInfo(oldFilePathWithFileName);
file.CopyTo(newFilePathWithFileName);

Пример:

File.Copy(@"c:\a.txt", @"c:\b.txt");

или

FileInfo file = new FileInfo(@"c:\a.txt");
file.CopyTo(@"c:\b.txt");
3 голосов
/ 28 августа 2014
File.Copy(@"C:\oldFile.txt", @"C:\newFile.txt", true);

Пожалуйста, не забудьте перезаписать предыдущий файл! Убедитесь, что вы добавили третий параметр. Добавив третий параметр, вы разрешите перезаписать файл. В противном случае вы можете использовать try catch для исключения.

С уважением, G

2 голосов
/ 18 августа 2011
StreamReader reader = new StreamReader(Oldfilepath);
string fileContent = reader.ReadToEnd();

StreamWriter writer = new StreamWriter(NewFilePath);
writer.Write(fileContent);
1 голос
/ 09 апреля 2013

Самый простой способ, который вы можете использовать, это:

System.IO.File.Replace(string sourceFileName, string destinationFileName, string destinationBackupFileName);

Это позаботится обо всем, что вы просили.

1 голос
/ 07 октября 2010

Вы можете использовать метод Copy в классе System.IO.File.

0 голосов
/ 07 октября 2010

Вы можете использовать либо метод File.Copy (oldFilePath, newFilePath), либо другой способ, прочитать файл с помощью StreamReader в строку и затем использовать StreamWriter, чтобы записать файл в место назначения.

Ваш код может выглядеть следующим образом:

StreamReader reader = new StreamReader("C:\foo.txt");
string fileContent = reader.ReadToEnd();

StreamWriter writer = new StreamWriter("D:\bar.txt");
writer.Write(fileContent);

Вы можете добавить код обработки исключений ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...