Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 7
1

Копирование файлов C#, конфликт winxp и win7

16.07.2012, 18:42. Показов 1310. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо было создать программу, в ходе выполнения которой приходилось копировать указанные файлы в специальную папку программы с изменением имени. Эта задача выполнялась вот таким кодом:
C#
1
File.Copy(picopn.FileName, "c\\p\\" + rnd1 + "-" + System.IO.Path.GetFileName(picopn.FileName), true);
где picopn - Opendialog, rnd1 - случайное число, уже переведенное в строку
В общем из файла, имя которого берется из диалога, получался файл по адресу <папка программы>\c\p\555-имяфайла.jpg

И все это чудо работает на моей Win 7, а так же семерке друга и подопытной восьмерке, но отказывается работать на Win XP. Перепробовал все варианты написания - ничего не помогло, всегда одна и та же ошибка
Код
Не удалось найти часть пути "c\p\имяфайла.jpg".
К сожалению, работы только на вин7-8 не достаточно, нужно еще и на хп.
Надеюсь на вашу помощь, а именно как исправить эту ошибку на ХП или чем заменить этот метод копирования на работающий в обеих операционках.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2012, 18:42
Ответы с готовыми решениями:

Настройка сети winXP - winXP winXP-win7 win7-win7
Снёс я win7. локальная сеть работает. Выхода в и-нет нет. Но почему-то происходит обмен пакетами....

Сеть между Win7 и WinXP - перетаскивание файлов
Есть сеть - настольный WinXp SP3 в него воткнут USB WiFi модуль ASUS Wlan, ноутбук ASUS K50in (Win7...

Соединение двух компьютеров (Win7 и WinXp) для передачи файлов
Как соединять два компьютера через WiFi модем TP LINK для передачи файлов. 1.Ноутбук (Win7)....

Копирование папки работает в Win7, но не работает в WinXP
Есть такой код, который работает на W7 но не работает на ХР(текст ошибки: не удается скопировать...

6
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
16.07.2012, 19:10 2
Перед копированием убедитесь, что директория <папка программы>\c\p\ существует.

Ну и у вас копируется не в папку с программой, а в текующую рабочую папку, которая может и меняться.
0
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 7
16.07.2012, 19:16  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Перед копированием убедитесь, что директория <папка программы>\c\p\ существует.

Ну и у вас копируется не в папку с программой, а в текующую рабочую папку, которая может и меняться.
Директория создана заранее, поэтому да, существует.

Если копируется в текущую рабочую папку, то почему на win7 копирует в папку программы? И как тогда обратиться к папке программы для копирования непосредственно в нее?
0
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
16.07.2012, 19:39 4
Цитата Сообщение от qhd Посмотреть сообщение
Директория создана заранее, поэтому да, существует.
Так вопрос в том, где эта директория "c\p": в рабочей папке или в папке с программой.

Цитата Сообщение от qhd Посмотреть сообщение
Если копируется в текущую рабочую папку, то почему на win7 копирует в папку программы?
Потому что, как я написал в предыдущем сообщении, текущая рабочая папка может меняться. Что на семерке, что на ХР. Причем менять ее могут и другие приложения.

Цитата Сообщение от qhd Посмотреть сообщение
как тогда обратиться к папке программы для копирования непосредственно в нее?
C#
1
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
1
0 / 0 / 0
Регистрация: 16.07.2012
Сообщений: 7
16.07.2012, 20:27  [ТС] 5
Цитата Сообщение от kolorotur Посмотреть сообщение
Так вопрос в том, где эта директория "c\p": в рабочей папке или в папке с программой.
В папке с программой. Способ с получением пути решил эту проблему, но функция там такая не одна и на них строятся другие части программы.
Можно ли как-то запретить менять рабочую папку или мб есть метод для назначения рабочей папки?
Пусть рабочей папкой будет папка программы, всегда, не зависимо от запуска диалогов. Ведь в вин7 те же действия ошибок не вызывают, значит так и есть.

Добавлено через 13 минут
upd: проблема решена. Для диалогов нужно было установить свойство RestoreDirectory = true. Теперь рабочая папка не изменяется.
0
Эксперт .NET
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
16.07.2012, 20:28 6
Цитата Сообщение от qhd Посмотреть сообщение
Можно ли как-то запретить менять рабочую папку
Вы можете предотвратить ее смену у себя в приложении (например свойство RestoreCurrentDirectory у Open/Save диалогов), но другим-то не запретишь.

Цитата Сообщение от qhd Посмотреть сообщение
мб есть метод для назначения рабочей папки?
Есть, свойство Environment.CurrentDirectory.
1
Kronk
27.07.2012, 02:56 7
Цитата Сообщение от qhd Посмотреть сообщение
Необходимо было создать программу, в ходе выполнения которой приходилось копировать указанные файлы в специальную папку программы с изменением имени. Эта задача выполнялась вот таким кодом:
C#
1
File.Copy(picopn.FileName, "c\\p\\" + rnd1 + "-" + System.IO.Path.GetFileName(picopn.FileName), true);
где picopn - Opendialog, rnd1 - случайное число, уже переведенное в строку
В общем из файла, имя которого берется из диалога, получался файл по адресу <папка программы>\c\p\555-имяфайла.jpg

И все это чудо работает на моей Win 7, а так же семерке друга и подопытной восьмерке, но отказывается работать на Win XP. Перепробовал все варианты написания - ничего не помогло, всегда одна и та же ошибка
Код
Не удалось найти часть пути "c\p\имяфайла.jpg".
К сожалению, работы только на вин7-8 не достаточно, нужно еще и на хп.
Надеюсь на вашу помощь, а именно как исправить эту ошибку на ХП или чем заменить этот метод копирования на работающий в обеих операционках.
Спасибо, долго искал как имя копируемого файла в папку копирования поместить, не знал как его от сюда dataGridView2.SelectedRows[0].Cells[2].Value.ToString() вытащить
27.07.2012, 02:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2012, 02:56
Помогаю со студенческими работами здесь

Есть три компа 2 с win7 и 1 c winXP. Лично у меня стоит win7. Проблема в том что пропал общий доступ , не могу подключиться на другие компьютеры
Чтобы не мусорить , задам вопрос здесь. Есть три компа 2 с win7 и 1 c winXP. Лично у меня стоит...

Win7, Winxp
Доброго времени суток. Такой вопрос по 2 ОС как можно узнать состояния этих двух ОС не на глаз а...

Win7 WinXp
что надёжней?

wi-fi в win7 и winXP
есть два ноутбука, на одном семерка на другом XP, и есть USB модем Мегафон.Нужно организовать сеть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru