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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2011, 20:31   #11
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
неужель нет готового класса?
ну ты сказал
доку листай в первую очередь
тем более что на мсдн она вся разжевана и переведена

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ЗЫ: настоящий код естественно сложнее, но структура та же, то есть после чтения текста, мне нужен сам именно Stream.
не знаю я какие ты там сложности придумал
этот пример чисто на коленке сляпан из примера с мсдн про стримридер
с потоком можно работать так же как и с файлом - прочитать определенное кол-во байт начиная с определенной позиции и т.п. - RTFM, короче
soleil@mmc вне форума Ответить с цитированием
Старый 09.03.2011, 21:42   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да я знаю что можно, но просто пример такой возьмите:
Код:
FileStream f=new FileStream(@"C:\1.txt",FileMode.Open,FileMode.Read);
StreamReader sr=new StreamReader(f,new ASCIIEncoding());
Console.WriteLine(sr.ReadLine());
FileStream f1=new FileStream(@"C:\2.bin",FileMode.Create,FileMode.Write);
f.CopyTo(f1);
sr.Close();
f.Close();
f1.Close();
суть в том что размер файла 2.bin не будет соответствовать тому что должно быть, ибо StreamReader считает к себе во внутренний буфер с запасом...
Цитата:
переведена
я и на англе читаю, но там не нашел...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.03.2011, 09:40   #13
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

я вот даже не знаю что ответить (тебе стоит перечитать несколько раз свою же подпись на форуме)
пока ты не засветишь глобальность замысла и не выложишь пример с более-менее похожим файлом с данными (того же размера) говорить о чем-то бесполезно

если тебе куда-то нужно стрим передать, то лучше наверное передать указатель на него
со строками то же самое
soleil@mmc вне форума Ответить с цитированием
Старый 10.03.2011, 09:54   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну вообще вопрос такой же как и был, мне нужен аналог класса StreamReader, но чтоб не использовал буферизацию.

иль хоть скажите что я размечтался(ну всмысле нет такого класса)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.03.2011, 10:07   #15
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

о какой буферизации идет речь?
еще раз - выложи пример исходника и сам файл чтобы это было наглядно видно что там твоя "буферизация" наделала
омжет ты там перемудрил чего в коде?! и вместо "буферизации" у тебя там какие-нить перескоки/пропуски чтения стрима?!
soleil@mmc вне форума Ответить с цитированием
Старый 10.03.2011, 10:16   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

буферизация класса StreamReader, иль вы не знали что он буферизирует данные?(посмотрите другие конструкторы, там можно задать минимальный размер этого буфера)

пример я сейчас не могу выложить, я не дома.(да и врятли сегодня буду)

но потерь с моей стороны точно нет, ибо после работы с StreamReader, операций смещения для FileStream нет, только операции чтения(причем пробовал даже банальный CopyTo, все равно, есть потери)
даже в коде с первого поста потери проявляются
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.03.2011, 10:27   #17
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ну вот выложишь пример - посмотрим

а вот выдержка из доки
Цитата:
Код:
public StreamReader(
	Stream stream,
	Encoding encoding,
	bool detectEncodingFromByteOrderMarks,
	int bufferSize
)
Параметры

stream
Тип: System.IO.Stream
Поток, который нужно считать.

encoding
Тип: System.Text.Encoding
Кодировка символов, которую нужно использовать.

detectEncodingFromByteOrderMarks
Тип: System.Boolean
Определяет, необходимо ли осуществлять поиск меток порядка следования байтов в начале файла.

bufferSize
Тип: System.Int32
Минимальный размер буфера.

Размер буфера задается с помощью параметра bufferSize в 16-разрядных символах. Если bufferSize меньше минимального допустимого размера (128 символов), то используется минимальный допустимый размер.
перевожу с русского на русский - то что ты там задавал буфер в 1 символ ничего не дает - буфер будет все равно минимум 128 символов
ну и опять же нужно видеть как ты обрабатываешь считанные символы: с определением их размера или без?
soleil@mmc вне форума Ответить с цитированием
Старый 10.03.2011, 10:41   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
ну и опять же нужно видеть как ты обрабатываешь считанные символы: с определением их размера или без?
эмм всмысле?
я читаю используя ASCIIEncoding.
Цитата:
Размер буфера задается с помощью параметра bufferSize в 16-разрядных символах. Если bufferSize меньше минимального допустимого размера (128 символов), то используется минимальный допустимый размер.
вот они мои 0,1КБ потерь...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.03.2011, 10:59   #19
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Просмотрел тему. Разделитель между строковой и бинарной частью пустая строка,т.е.
Строка1
Строка2
Строка3

Бинарник.

Я правильно понял? У меня есть бинарный файл и я знаю размер бинарной части своего файла, добавил в него несколько строк-разделил пустой строкой. Осуществлял только чтение,но думаю запись бинарной части сделать не проблема?
Тогда так...
Код:
public void ReadWithStrings(string name)//name-имя файла
            {
                using (FileStream stream = new FileStream(name, FileMode.Open))
                {
                    using (StreamReader read = new StreamReader(stream))
                    {
                        int Pos = 0;
                        string s = read.ReadLine();
                        while (s != "")
                        {
                            Pos += s.Length + Environment.NewLine.Length;//учитываем размер строки+ переход на новую строку
                            s=read.ReadLine();
                            
                        }
                        stream.Position = Pos + Environment.NewLine.Length;//учитываем размер разделителя(размер перехода на др. строку)
                            ReadFile(stream);//переходим к чтению бинарной части,позицию мы в потоке запомнили
                   
                    }
                }

            }
            public void ReadFile(FileStream stream)
            {

                using (BinaryReader read = new BinaryReader(stream))
                {//здесь я читаю бинарную часть,но можно и писать ее,главное знать размер этой части
                } 
              }
Вот как-то так. СтримРеадер действительно считывает сразу 1024 байт,т.е. позиция изначально = 1024...
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
<b>Осуществление ввода с клавиатуры без последующего подтверждения(без ENTER)</b> khorolpavel Общие вопросы C/C++ 2 30.12.2010 12:04
Использование метода двойной буферизации для динамической графики(избавление от мерцания) noxin Win Api 1 05.04.2010 20:08
Win Api: использование метода двойной буферизации для динамической графики(избавление от мерцания) noxin Помощь студентам 0 05.04.2010 19:55
Аналог try. beemoto Общие вопросы Delphi 16 16.12.2009 18:33
Процедуры без Bios и без Dos,бывают? codeok Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 31.10.2008 03:17