Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2017, 19:02   #1
Nigativchik
Новичок
Джуниор
 
Регистрация: 14.02.2017
Сообщений: 5
По умолчанию Чтение из текстового файла.

Добрый вечер всем! При чтении строки из текстового файла, вся строка вычитывается отлично, кроме символа "№", вместо него выдается знак вопроса. Сама та строка(которую вычитываю), путь к другому файлу, который нужно открыть. Поэтому нужны все символы. А в данной ситуации, у меня файл не открывает, т.к. не находит путь.

сначала создаю поток
Код:
FileReader fin = new FileReader("address.txt", FileMode.Open);
затем
Код:
StreamReader file = new StreamReader(fin);
Может какие то проблемы с кодировкой??

Заранее спасибо за помощь!

Последний раз редактировалось Alex11223; 14.02.2017 в 20:16.
Nigativchik вне форума Ответить с цитированием
Старый 14.02.2017, 20:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так а где код чтения-то?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.02.2017, 17:08   #3
Nigativchik
Новичок
Джуниор
 
Регистрация: 14.02.2017
Сообщений: 5
По умолчанию

Вот код функции:
Код:

public void Get_Data() {
            FileStream fin;
            string s;
            string temp_DAT = "Data=";
            string temp_Address = "Address= ";
            string temp_NModule = "Module=";
            string temp_Units = "Units=";
            string temp_NCycles = "Cycles=";
            string temp_NPortion = "Portions=";
            string temp_PortionLen = "Portion len0=";
            string temp_Points = "Points=";
            


            try {
                // Создаём поток
                fin = new FileStream(Name_Cont, FileMode.Open);                           
            }
            catch(FileNotFoundException) {
                MessageBox.Show("Файл .cont отсутствует в папке!","Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return ;
            }
            StreamReader in_file = new StreamReader(fin);
            // Считываем файл построчно
            while(!in_file.EndOfStream) {
              s = in_file.ReadLine();

                // Поиск имени файла .dat в файле данных
                if(s.StartsWith(temp_DAT)) {
                    Name_Dat.Add(s.Remove(0, (temp_DAT.Length)));
                }

                // Поиск адреса модуля в файле данных
                if(s.StartsWith(temp_Address)) {
                    Address_Channel.Add(s.Remove(0, (temp_Address.Length)));
                }

                // Поиск наименования модуля
                if(s.StartsWith(temp_NModule)) {
                    Name_Module = s.Remove(0, (temp_NModule.Length));
                }

                // Поиск единиц измерения
                if (s.StartsWith(temp_Units))
                {
                    Units = s.Remove(0, (temp_Units.Length));
                }

                // Поиск количества циклов
                if(s.StartsWith(temp_NCycles)) {
                    N_Cycles = Convert.ToInt32(s.Remove(0, temp_NCycles.Length));
                }

                // Поиск кол-ва порций
                if(s.StartsWith(temp_NPortion)) {
                    N_Portion = Convert.ToInt32(s.Remove(0, temp_NPortion.Length));
                }

                // Поиск длинны порции
                if(s.StartsWith(temp_PortionLen)) {
                    Portion_Len = Convert.ToInt32(s.Remove(0, temp_PortionLen.Length));
                }

                // Поиск количества ступеней нагружения
                if(s.IndexOf(temp_Points) == 0) {
                    temp_Points = s.Remove(0, temp_Points.Length);
                    N_Points = Convert.ToInt32(temp_Points);
                }
                
            }
                       
            in_file.Dispose();
            fin.Dispose();
        }


полный код класса, написанный на данный момент, в прикреплённом файле

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.
Вложения
Тип файла: txt Cont_file.txt (5.0 Кб, 123 просмотров)

Последний раз редактировалось Alex11223; 15.02.2017 в 17:32.
Nigativchik вне форума Ответить с цитированием
Старый 15.02.2017, 17:26   #4
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Кодировка ?
У меня часто бывают с этим проблемы, когда я из стандартного блокнота сохраняю в ASCII (другие кроме UTF-8 не пробовал). Студия (у меня) работает в UTF-8 по умолчанию. Проблемы с кириллицей налицо.
При работе с текстовыми файлами (например в классе File) можно указывать кодировку дополнительно.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 15.02.2017 в 17:36.
OmegaBerkut вне форума Ответить с цитированием
Старый 15.02.2017, 17:39   #5
Nigativchik
Новичок
Джуниор
 
Регистрация: 14.02.2017
Сообщений: 5
По умолчанию

Разобрался!!!))) В строке
Код:
StreamReader in_file = new StreamReader(fin);
добавил:
Код:
StreamReader in_file = new StreamReader(fin, Encoding.Default)
Стало всё супер!!!
Nigativchik вне форума Ответить с цитированием
Старый 15.02.2017, 17:45   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Nigativchik Посмотреть сообщение
Стало всё супер!!!
Сломается если в настройках винды стоит не русская локаль и вы пришлете туда свой файл.

Вообще лучше всегда сохранять текстовые файлы в UTF-8.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.02.2017, 17:50   #7
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
всегда сохранять текстовые файлы в UTF-8
Или юникод. Тогда вообще не должно быть проблем. Но и читать нужно в нём соответственно.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 15.02.2017, 17:57   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Или юникод
А UTF-8 это что?

http://local.joelonsoftware.com/wiki...BB%D0%BE%D0%B2
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.02.2017, 17:57   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Или юникод. Тогда вообще не должно быть проблем. Но и читать нужно в нём соответственно.
а UTF-8 по вашему что?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.02.2017, 18:15   #10
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а UTF-8 по вашему что?
Ну не знаю, так то в детали не вникал; если вы скажете, что это одно и тоже - я пойму и приму.
Но вроде как разница в количестве байтиков на символ. Тут 2, там 4. Но это не точно, ибо уже не помню.
Изображения
Тип файла: png Кодировка.png (11.2 Кб, 51 просмотров)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение текстового файла Елена77 C# (си шарп) 1 29.04.2013 23:28
Чтение из текстового файла demiancz Общие вопросы Delphi 4 03.11.2012 20:36
чтение с текстового файла salwator Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2011 15:49
чтение текстового файла Аглан Microsoft Office Access 2 15.02.2011 22:14
Чтение из текстового файла MooNChilDUA Общие вопросы C/C++ 2 13.01.2011 19:25