Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> File.Copy 
V
    Опции темы
4ybaka
Дата 3.1.2008, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



написал простую программку копирования файлов,и обнаружил,что она не воспринимает пути,указанные на кирилице.сначала подумал,что проблема в кодировке,но потом полистал мсдн + форум,и все-таки понял,что дело в чем-то другом.т.е. если все в UTF-16,то и обработка путей тоже должна быть адекватная,а мне вместо ...\Кино\Черный альбом\Кукушка.mp3 выдает стену с жутким количеством окошечек...(намекать не пытался,просто очень было похоже smile ) кто-нибудь сталкивался с подобной проблемой?

Это сообщение отредактировал(а) 4ybaka - 3.1.2008, 01:10


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
mr.DUDA
Дата 3.1.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(4ybaka @  3.1.2008,  00:09 Найти цитируемый пост)
а мне вместо ...\Кино\Черный альбом\Кукушка.mp3 выдает

Код в студию! File.Copy нормально воспринимает путь хоть на кириллице, хоть на суахили.


--------------------
user posted image
PM MAIL WWW   Вверх
4ybaka
Дата 3.1.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



Код

            while (!playlist.EndOfStream)
            {
                try{
                    temp = playlist.ReadLine();
                    if (temp[0] == '#')
                        continue;

                    File.Copy(temp, path + "\\" + Path.GetFileName(temp), false);
                }
                catch (Exception exc)
                {
                    if (MessageBox.Show(exc.Message + "\nContinue?", "Error", MessageBoxButtons.YesNo) == DialogResult.Yes){
                        continue;
                    }
                    else{
                        playlist.Close();
                        return;
                    }
                }
            }
            playlist.Close();
            MessageBox.Show("All files copied.","System");
        }

нормално копирует файлы как до, так и после файлов с путями на кирилице...


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
mr.DUDA
Дата 3.1.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



При создании playlist (я так понял, это StreamReader?) надо кодировку указать ту, которая в читаемом файле плейлиста, иначе вместо кириллицы в строку temp будет попадать "куча окошек на стене" -- некорректно прочитанные char-ы smile. Соответственно, и в File.Copy будет передаваться путь с кракозяблами вместо кириллицы, а такой путь не существует.


--------------------
user posted image
PM MAIL WWW   Вверх
Любитель
Дата 3.1.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Цитата(4ybaka @  3.1.2008,  18:27 Найти цитируемый пост)
playlist

Ты как объект потока создаёшь? Смею предположить, что энкодинг ты не задал...

Добавлено через 1 минуту и 15 секунд
О, пока до этого таба дошёл, mr.DUDA уже ответил smile


--------------------
PM MAIL ICQ Skype   Вверх
4ybaka
Дата 3.1.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



да,энкодинг не задал..smile но вот проблема появилась - те форматы (UTF-7,UTF-8,ASCII...) они все не подходят,тоже кракозябры выдают.Вордом нашел,что нужна Кирилица(windows).и вопрос - КАК задать?


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
Любитель
Дата 3.1.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 11
Всего: 92



Код

Encoding.GetEncoding(1251)



--------------------
PM MAIL ICQ Skype   Вверх
4ybaka
Дата 3.1.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 28.4.2007

Репутация: нет
Всего: нет



спасибо!отлично все работает smile


--------------------
"То,что вы понимаете - это все,что вы понимаете."
 Брайн Керниган
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0801 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.