Запись в текстовый файл в C#
От: bulatik  
Дата: 29.01.06 13:21
Оценка:
Здравствуйте.
Нужен ответ на такой вопрос:
Как писат в файл в C#:
Использую класс StreamReader/StreamWriter, но мне необходимо писать в один файл, потом читать из него, потом опять писать в него, но Я не знаю сколько раз это будет продолжаться, не знаю как правильно организовать смену режима чтения на запись и обратно...
Может нужно закрывать файл и переоткрывать для чтения и т.д.
но как это делать не имею представления...
Помогите пожалуйста.

29.01.06 18:10: Перенесено из 'О жизни'
Re: Запись в текстовый файл в C#
От: pavel_turbin  
Дата: 29.01.06 13:39
Оценка:
Здравствуйте, bulatik, Вы писали:

B>Здравствуйте.

B>Нужен ответ на такой вопрос:
B>Как писат в файл в C#:
B>Использую класс StreamReader/StreamWriter, но мне необходимо писать в один файл, потом читать из него, потом опять писать в него

я бы начал отсюда:
How to: Write Text to a File
Re: Запись в текстовый файл в C#
От: ie Россия http://ziez.blogspot.com/
Дата: 30.01.06 04:49
Оценка:
Здравствуйте, bulatik, Вы писали:

B>Нужен ответ на такой вопрос:

B>Как писат в файл в C#:
B>Использую класс StreamReader/StreamWriter, но мне необходимо писать в один файл, потом читать из него, потом опять писать в него, но Я не знаю сколько раз это будет продолжаться, не знаю как правильно организовать смену режима чтения на запись и обратно...
B>Может нужно закрывать файл и переоткрывать для чтения и т.д.

Правильный ответ по большей части будет зависить от поставленной задачи. Если действительно нужно писать и читать из файла вперемешку, то открывать и закрывать его непереставая — удовольствия никакого. В таком случае надо использовать конструктор класса FileStream с параметром FileShare:

string fname = @"c:\temp\temp.txt";
using (StreamWriter sw = new StreamWriter(
    new FileStream(fname, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read)))
using (StreamReader sr = new StreamReader(
    new FileStream(fname, FileMode.Open, FileAccess.Read, FileShare.Write)))
{
    sw.WriteLine("This is a test...line #1.");
    sw.Flush();
    Console.WriteLine(sr.ReadLine());
    sw.WriteLine("This is a test...line #2.");
    sw.WriteLine("This is a test...line #3.");
    sw.Flush();
    Console.WriteLine(sr.ReadToEnd());
}


Конечно, если в файл данные пишутся и читаются из множества потоков, то следует позаботиться о должной синхронизации.

29.01.06 18:10: Перенесено из 'О жизни'


А вот это понравилось, ну жизненный такой вопрос
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Превратим окружающую нас среду в воскресенье.
Re: Запись в текстовый файл в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.01.06 22:52
Оценка:
Здравствуйте, bulatik, Вы писали:

Какой смысл одновременно читать и писать в текстовый файл? Если файл бинарный, то его можно как-то поделить на области и заниматься их блокировкой, а затем чтением или записью. Но текстовый файл вещь принципиально потоковая. Или у вас все строки одинаковой длинны?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Запись в текстовый файл в C#
От: Ник  
Дата: 30.01.06 23:25
Оценка:
B>Использую класс StreamReader/StreamWriter, но мне необходимо писать в один файл, потом читать из него, потом опять писать в него, но Я не знаю сколько раз это будет продолжаться, не знаю как правильно организовать смену режима чтения на запись и обратно
А большой файл вообще? Может, его считать в какую-то структуру данных в памяти, и там потом с этим фаршем в памяти и работать до победного конца, а в конце обратно в файл скинуть? А то так очень уж некрасиво получается.
Re[2]: Запись в текстовый файл в C#
От: Whistler Россия Блог на GotDotNet.ru
Дата: 01.02.06 12:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, bulatik, Вы писали:


VD>Какой смысл одновременно читать и писать в текстовый файл? Если файл бинарный, то его можно как-то поделить на области и заниматься их блокировкой, а затем чтением или записью. Но текстовый файл вещь принципиально потоковая. Или у вас все строки одинаковой длинны?


СТОП: Читать и писать в файлы умею Но вопрос. А как можно заблокировать часть файла? Ты что имел ввиду? Одним процессом заблокировать часть файла, и другой процесс сможет считать только незаблокированную часть файла? Или я, сунув нос в эту ветку, услышал звон не там? Если такое возможно, то никогда об этом не слышал... ткните меня носом в MSDN. Спасибо!
Re[3]: Запись в текстовый файл в C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.02.06 17:12
Оценка:
Здравствуйте, Whistler, Вы писали:

W>СТОП: Читать и писать в файлы умею Но вопрос. А как можно заблокировать часть файла?


Еще раз по буквам. Текстовый файл по своей сути сущьность потоковая. Так что не как! Если нужно блокировать части файла, то нужно читать его как бинарный поток.

W> Ты что имел ввиду? Одним процессом заблокировать часть файла, и другой процесс сможет считать только незаблокированную часть файла?


Для чтения блокировка не нужна. Вернее нужна, разделяемая. А вот если кто-то параллельно пишет, то без блокировки не обойтись. Иначе такие глюки будут...

W> Или я, сунув нос в эту ветку, услышал звон не там? Если такое возможно, то никогда об этом не слышал... ткните меня носом в MSDN. Спасибо!


Не вопрос FileStream.Lock
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Запись в текстовый файл в C#
От: Whistler Россия Блог на GotDotNet.ru
Дата: 06.02.06 09:17
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Не вопрос FileStream.Lock


Сенкс, ни разу не обращал внимания на такую фичу!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.