Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > File.Copy


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

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

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

Автор: 4ybaka 3.1.2008, 18:27
Код

            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");
        }

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

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

Автор: Любитель 3.1.2008, 18:49
Цитата(4ybaka @  3.1.2008,  18:27 Найти цитируемый пост)
playlist

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

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

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

Автор: Любитель 3.1.2008, 19:22
Код

Encoding.GetEncoding(1251)

Автор: 4ybaka 3.1.2008, 21:26
спасибо!отлично все работает smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)