Статья Как скопировать файл с помощью языка C#?
Для работы мы используем класс File и метод Copy, в который в качестве первого параметра, передаём полный путь к файлу, который необходимо скопировать. Вторым параметров указываем, куда мы копируем файл. Третий, необязательный параметр, который имеет тип bool, позволяет определить действие, которое нужно выполнить, если в папке dir2 уже содержится файл (2.txt). Например, если установить значение true, то тогда при копировании файла (1.txt), файл (2.txt) будет перезаписан, если же мы установим значение false, то в таком случае получим выброс исключения, так как файл уже существует, а его изменение (перезапись) мы запретили.
Так же не забывайте при работе с пространством имён System.IO использовать блоки try catch.
Сначала с помощью метода GetFiles, используя маску (*.*), получаем все файлы в папке Dir1, а затем по очереди копируем их. Если Вам необходимо скопировать все файлы только какого-то определенного типа, например все текстовые файлы (.txt), то тогда указываем маску (*.txt), для mp3 файлов (*.mp3) и так далее. Значение true указываем в том случаи, если требуется перезаписать старые файлы в папке Dir2.
САНЯ
24.08.2016 в 09:37
хм, к примеру я получил список файлов в папке и подпапках с датой изменения
а как теперь скопировать все файлы к примеру в c:1 и потом через некоторе время скопировать файлы которые изменились?
ADMIN
25.08.2016 в 06:15
«а как теперь скопировать все файлы к примеру в c:1»
и потом через некоторе время скопировать файлы которые изменились?
Например, можно добавить таймер и запускать его сразу после первого копирования.
пару вопросов, что не задал сразу, сорри!
этим кодом я копирую файлы в папке 2, но в ней есть подпапки, а как скопировать все папки со всеми файлами? список папок и файлов я получаю в приведенным мной кодом выше, так же я получаю дату изменения, к примеру я первый раз сразу копирую все папки и файлы из 2, а потом будет работать таймер по которому будет копирование измененых файлов. Точнее я же получаю список файлов и папок в листбокс1, это к примеру, при запуске программы и сразу их копирую, а потом работает таймер, где я уже вывожу список папок и файлов листбокс2, и потом ведь я могу их сравнить и удалить совпадения по дате изменения, и остануться те которые нужно будет скопировать… как указать копирование файлов и папок из листбокса1, при запуске и листбокс2 по таймеру?))))
ADMIN
27.08.2016 в 14:49
как скопировать все папки со всеми файлами
можно использовать рекурсию, например:
как указать копирование файлов и папок из листбокса1, при запуске и листбокс2 по таймеру?))))
САНЯ
27.08.2016 в 23:58
если честно, то у меня ничего не выходит, что то я совсем запутался вот полный листинг кода, задача получить все файлы и папки с подпапками в с:2 вывести листбокс1, потом скопировать в c:1, а там уже сам))
[cut]
подскажи, а как сделать перезапись файл — этот метод запрещает это сделать? и такой если файл будет открыт, он скопируеться?
ADMIN
31.08.2016 в 16:29
подскажи, а как сделать перезапись файл — этот метод запрещает это сделать?»
Ответ на этот вопрос есть в статье.
если файл будет открыт, он скопируеться?
Да, но лучше всё равно обработать возможность возникновения System.IO.IOException
САНЯ
31.08.2016 в 19:51
админ, я использую CopyDir(@»C:2″, @»C:1″ а как указать вместо c:2 список папок в листбокс? пробывал пару вариантов, но видать не правильно
САНЯ
02.09.2016 в 19:39
админ, новерно крайний вопрос)) в листбокс файл + дата изменения, скопировать как не получаеться и оно понятно, а как отделить при копировании дату изменения до пробела
ADMIN
04.09.2016 в 04:44
Получить только путь из строки?
САНЯ
05.09.2016 в 05:30
Админ а что не правильно, пытаюсь удалить совпадение строк? удаляет только первую
ADMIN
06.09.2016 в 03:32
Поставь точку остановы и посмотри, что происходит со списком listbox1 до удаления элемента и после.
САНЯ
07.09.2016 в 01:14
по идее должны быть так? переменные обьявлены в классе, я понимаю что это должно быть просто, но что то совсем не могу вникнуть…. очень хочу научится , но самоучкой трудно((
САНЯ
09.09.2016 в 01:31
админ привет, подскажи что не так? после удаления сравнений, в листбоксе2 остаеться к примеру путь с:22.txt 11.11.11 11:11 но при использовании ниже приведенного кода, выдаёт ошибку!
ADMIN
10.09.2016 в 07:27
выдаёт ошибку
САНЯ
11.09.2016 в 09:21
решил попробывать вставить рекурсию по нажатию кнопки
Необработанное исключение типа «System.InvalidOperationException» в System.Windows.Forms.dll
Дополнительные сведения: Список, к которому привязан данный перечислитель, был изменен. Перечислитель может использоваться, только если список не изменяется.
ADMIN
12.09.2016 в 04:21
По нажатию кнопки должно быть так:
Полный код метода CopyAllDirsAndFiles добавлял выше в комментариях.
Эта строка не содержит путь, хотя и не используется:
Источник
Руководство по программированию на C#. Копирование, удаление, перемещение файлов и папок How to copy, delete, and move files and folders (C# Programming Guide)
В следующих примерах показано, как синхронно копировать, перемещать и удалять файлы и папки с помощью классов System.IO.File, System.IO.Directory, System.IO.FileInfo, и System.IO.DirectoryInfo из пространства имен System.IO. The following examples show how to copy, move, and delete files and folders in a synchronous manner by using the System.IO.File, System.IO.Directory, System.IO.FileInfo, and System.IO.DirectoryInfo classes from the System.IO namespace. В этих примерах не используется индикатор хода выполнения или какой-либо иной пользовательский интерфейс. These examples do not provide a progress bar or any other user interface. Если нужно использовать стандартное диалоговое окна хода выполнения, см. практическое руководство Отображение диалогового окна хода выполнения для операций с файлами. If you want to provide a standard progress dialog box, see How to provide a progress dialog box for file operations.
Используйте System.IO.FileSystemWatcher для предоставления событий, которые позволяют вычислять ход выполнения при работе с несколькими файлами. Use System.IO.FileSystemWatcher to provide events that will enable you to calculate the progress when operating on multiple files. Другим подходом является использование вызова неуправляемого кода для вызова в Windows Shell методов, относящихся к обработке файлов. Another approach is to use platform invoke to call the relevant file-related methods in the Windows Shell. Сведения о способах асинхронного выполнения таких операций над файлами см. в разделе Асинхронный файловый ввод-вывод. For information about how to perform these file operations asynchronously, see Asynchronous File I/O.
Пример Example
В следующем примере показано, как копировать файлы и каталоги. The following example shows how to copy files and directories.
Пример Example
В следующем примере показано, как перемещать файлы и каталоги. The following example shows how to move files and directories.
Пример Example
В следующем примере показано, как удалять файлы и каталоги. The following example shows how to delete files and directories.
Источник
10.7. Копирование файла
10.7. Копирование файла
Требуется скопировать файл, причем так, чтобы эта операция была переносимой, т.е. без использования зависящего от ОС программного интерфейса.
Используйте файловые потоки С++, определенные в , для копирования одного потока в другой. Пример 10.9 показывает, как можно скопировать поток с помощью буфера
Пример 10.9. Копирование файла
const static int BUF_SIZE = 4096;
int main(int argc, char** argv) <
ios_base::in | ios_base::binary); // Задается двоичный режим, чтобы
std::ofstream out(argv[2], // можно было обрабатывать файлы с
ios_base::out | ios_base::binary), // любым содержимым
// Убедитесь, что потоки открылись нормально.
in.read(&buf[0], BUF_SIZE); // Считать максимум n байт в буфер,
out.write(&buf[0], in.gcount()); // затем записать содержимое буфера
> while (in.gcount() > 0); // в поток вывода.
// Проверить наличие проблем в потоках.
Можно посчитать, что копирование файла — это простая операция чтения из одного потока и записи в другой поток. Однако библиотека потоков C++ достаточно большая, и существует несколько различных способов чтения и записи потоков, поэтому надо обладать некоторыми знаниями об этой библиотеке, чтобы избежать ошибок, снижающих производительность этой операции.
Пример 10.9 работает быстро, потому что используется буферизация ввода-вывода. Функции read и write оперируют сразу всем содержимым буфера вместо посимвольного копирования, когда в цикле считывается символ из потока ввода в буфер и затем записывается в поток вывода. При их выполнении не делается никакого форматирования, подобного тому, которое выполняется операторами сдвига влево и вправо, что ускоряет выполнение операции. Кроме того, поскольку потоки работают в двоичном режиме, не надо специально обрабатывать символы EOF. В зависимости от используемого вами оборудования, ОС и т.д. вы получите различный результат при различных размерах буфера. Экспериментально вы можете найти наилучшие параметры для вашей системы
Однако можно добиться большего. Все потоки C++ уже буферизуют данные при их чтении и записи, поэтому в примере 10.9 фактически выполняется двойная буферизация. Поток ввода имеет свой собственный внутренний буфер потока, который содержит символы, прочитанные из исходного файла, но еще не обработанные с помощью read, operator
using namespace std;
using namespace boost::filesystem;
int main(int argc, char** argv) <
// Преобразовать аргументы в абсолютные пути, используя «родное»
path src = complete(path(argv[1], native));
path dst = complete(path(argv[2], native));
> catch (exception& e) <
Читайте также
Пример: простое последовательное копирование файла
Пример: простое последовательное копирование файла В следующих разделах приведены примеры коротких программ, реализующих простое последовательное копирование содержимого файла тремя различными способами:1. С использованием библиотеки С.2. С использованием Windows.3. С
Установка размера файла, инициализация файла и разреженные файлы
Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла
13.5.1. Копирование
13.5.1. Копирование Самый простой вариант создания резервной копии — использование команды cp (копирование файлов). Только в этом случае необходимо обязательно сохранять права доступа к файлу. Вот как может выглядеть команда, дублирующая директорию /home на примонтированном
Копирование
Копирование Вставьте компакт-диск в привод. Щелкните мышью на кнопке Копировать с диска (рис. 3.22). С помощью соответствующих флажков отметьте произведения, предназначенные для копирования. В строке состояния при этом будет отображаться количество выбранных
Копирование объектов
Копирование объектов Представьте, что мы строим кровать, которая стоит на четырех ножках-опорах. Мы построили одну ножку, расположили ее в нужном месте, теперь необходимо построить еще одну. Каждый раз строить новую нерационально, особенно если это не просто ножка, а
Копирование
Копирование В этом примере мы копируем базу данных, находящуюся на диске D: удаленного сервера, в файл копии на диске F: той же самой удаленной машины. Мы направляем подробный отчет об операции в файл протокола в другом каталоге. Как обычно, пример является одной строкой:gbak
Перемещение и копирование
Перемещение и копирование Чтобы изменить место положения перехода, достаточно переместить его значок с помощью мыши на новое место.Если для большого количества сцен проекта подойдет один и тот же переход (например, при создании слайд-шоу), то можно использовать
Копирование объектов
Копирование объектов С командой COPY вы познакомились в главе 3. Повторим основные моменты, связанные с копированием объектов в AutoCAD с указанием базовой точки.Выполните следующие действия.1. Создайте простой объект или откройте чертеж, содержащий такой объект.2. Вызовите
Копирование
Копирование BlindWrite Suite Сайт: http://www.blindwrite.comРазмер: 2,8 МбСтатус: SharewareЦена: $32Весьма популярная на Западе программа для точного копирования дисков. Ранее поставлялась в виде двух отдельных модулей – BlindRead, отвечавшего за сброс содержимого диска в файл-образ и собственно
Копирование узлов
Копирование узлов Преобразование может включать в себя не только создание новых, но и копирование существующих узлов. Для этого можно использовать элементы xsl:copy и xsl:copy-of, использование которых будет подробно разобрано
Неудачи и копирование
Неудачи и копирование Патрик Коллисон, студент Массачусетского технологического институтаЛарри Уолл писал, что типичными чертами великих программистов являются лень, нетерпение и гордыня. Я не знаю, врожденные это особенности или они приобретаются прилежной работой
4.2.3. Копирование, переименование и перемещение файла или папки
4.2.3. Копирование, переименование и перемещение файла или папки Для копирования файла (группы файлов) или папки (группы файлов) нужно выполнить следующие действия:1. Выделите файлы — можно выделить один файл или каталог — для этого просто щелкните по нему. Для выделения
Источник
Как скопировать файл с помощью языка c#?
The Codeby — одна из сильнейших Red Team в RU сегменте. Команда профессионалов, специализирующаяся на аудите информационных систем и тестировании на проникновение.
Мы предлагаем: Аудит веб-сайта компании, Аудит внешнего периметра, Аудит веб-приложения, Аудит внутренней корпоративной сети, Проверка ИБ-грамотности сотрудников, Анализ кода ПО, Аудит Wi-Fi и СКУД, Выявление уязвимостей ПО серверов и рабочих станций, Пентест инфраструктуры методом черного ящика. Подробнее .
C# Как скопировать файл?
Из этой статьи Вы узнаете, как скопировать файл, используя язык c#. Но, для начала хотелось бы сказать, что, не смотря на то, что данная операция на самом деле состоит из нескольких этапов, например, таких как создание нового файла, по байтовое копирование информации, удаление старого файла. В языке csharp нас избавили от всех этих «мелких нюансов», поэтому для того, чтобы скопировать файл 1.txt из папки c:\dir1 в папку с:\dir2, вам всего лишь нужно в своей программе написать буквально одну строчку кода.
Для работы мы используем класс File и метод Copy, в который в качестве первого параметра, передаём полный путь к файлу, который необходимо скопировать. Вторым параметров указываем, куда мы копируем файл. Третий, необязательный параметр, который имеет тип bool, позволяет определить действие, которое нужно выполнить, если в папке dir2 уже содержится файл (2.txt). Например, если установить значение true, то тогда при копировании файла (1.txt), файл (2.txt) будет перезаписан, если же мы установим значение false, то в таком случае получим выброс исключения, так как файл уже существует, а его изменение (перезапись) мы запретили.
Так же не забывайте при работе с пространством имён System.IO использовать блоки try catch.
Как скопировать все файлы?
И ещё один пример, в котором рассмотрим простую задачу, в которой нужно скопировать все файлы из папки Dir1 в папку Dir2.
Сначала с помощью метода GetFiles, используя маску (*.*), получаем все файлы в папке Dir1, а затем по очереди копируем их. Если Вам необходимо скопировать все файлы только какого-то определенного типа, например все текстовые файлы (.txt), то тогда указываем маску (*.txt), для mp3 файлов (*.mp3) и так далее. Значение true указываем в том случаи, если требуется перезаписать старые файлы в папке Dir2.
20 thoughts to “Как скопировать файл с помощью языка c#?”
хм, к примеру я получил список файлов в папке и подпапках с датой изменения
а как теперь скопировать все файлы к примеру в c:1 и потом через некоторе время скопировать файлы которые изменились?
«а как теперь скопировать все файлы к примеру в c:1»
«и потом через некоторе время скопировать файлы которые изменились?»
Например, можно добавить таймер и запускать его сразу после первого копирования.
пару вопросов, что не задал сразу, сорри!
этим кодом я копирую файлы в папке 2, но в ней есть подпапки, а как скопировать все папки со всеми файлами? список папок и файлов я получаю в приведенным мной кодом выше, так же я получаю дату изменения, к примеру я первый раз сразу копирую все папки и файлы из 2, а потом будет работать таймер по которому будет копирование измененых файлов. Точнее я же получаю список файлов и папок в листбокс1, это к примеру, при запуске программы и сразу их копирую, а потом работает таймер, где я уже вывожу список папок и файлов листбокс2, и потом ведь я могу их сравнить и удалить совпадения по дате изменения, и остануться те которые нужно будет скопировать…) как указать копирование файлов и папок из листбокса1, при запуске и листбокс2 по таймеру?))))
«как скопировать все папки со всеми файлами»
можно использовать рекурсию, например:
«как указать копирование файлов и папок из листбокса1, при запуске и листбокс2 по таймеру?))))»
если честно, то у меня ничего не выходит, что то я совсем запутался вот полный листинг кода, задача получить все файлы и папки с подпапками в с:2 вывести листбокс1, потом скопировать в c:1, а там уже сам))
[cut]
File.Copy(file, ToDir + «» + Path.GetFileName(file));
подскажи, а как сделать перезапись файл — этот метод запрещает это сделать? и такой если файл будет открыт, он скопируеться?
«подскажи, а как сделать перезапись файл — этот метод запрещает это сделать?»
Ответ на этот вопрос есть в статье.
«если файл будет открыт, он скопируеться?»
Да, но лучше всё равно обработать возможность возникновения System.IO.IOException
админ, я использую CopyDir(@»C:2″, @»C:1″) а как указать вместо c:2 список папок в листбокс? пробывал пару вариантов, но видать не правильно
админ, новерно крайний вопрос)) в листбокс файл + дата изменения, скопировать как не получаеться и оно понятно, а как отделить при копировании дату изменения до пробела
Получить только путь из строки?
Админ а что не правильно, пытаюсь удалить совпадение строк? удаляет только первую
Поставь точку остановы и посмотри, что происходит со списком listbox1 до удаления элемента и после.
по идее должны быть так? переменные обьявлены в классе, я понимаю что это должно быть просто, но что то совсем не могу вникнуть…. очень хочу научится , но самоучкой трудно((
админ привет, подскажи что не так? после удаления сравнений, в листбоксе2 остаеться к примеру путь с:22.txt 11.11.11 11:11 но при использовании ниже приведенного кода, выдаёт ошибку!
решил попробывать вставить рекурсию по нажатию кнопки
Необработанное исключение типа «System.InvalidOperationException» в System.Windows.Forms.dll
Дополнительные сведения: Список, к которому привязан данный перечислитель, был изменен. Перечислитель может использоваться, только если список не изменяется.
По нажатию кнопки должно быть так:
Полный код метода CopyAllDirsAndFiles добавлял выше в комментариях.
Эта строка не содержит путь, хотя и не используется:
Источник
Копирование файла в другую папку
Копирование файла в папку
Добрый день всем. Понимаю, что вопрос простенький, но сколько не искал в нете ответа, так и не.
Копирование файла, выбранного через OpenFileDialog, в папку проекта
Подскажите пожалуйста как реализовать такую вещь? Выбираю я файл на компьютере с помощью.
Копирование файла при сборке приложения в папку сборки
Есть файл конфигурации одного из объектов. Прикреплён к проекту. Нужно этот файл копировать при.
Копирование файлов из папки в папку
using System; using System.Collections.Generic; using System.Linq; using System.Text; using.
проверки на то, что есть такой файл и прочее это уж сам
Khan, Файл назначения должен иметь имя..
Копирует файл в файл.
вот так будет работать..
и прочти еще раз то что я написал
Noob.net, да я уже понял чтобы копировать файл с начало надо создать файл с таким именем на папку 216.
но это как-то долгий процесс каждый раз надо создать файл который надо копировать
Добавлено через 39 минут
решил с начало создать файл с таким именем потом копировать вот так
но выводить такую ошибку
(Процесс не может получить доступ к файлу «d:\216\f6.txt», так как этот файл используется другим процессом.)
можно ли как-то после создание файл закрыть это процесс потом копировать
Источник