Запись в файл
От: Аноним  
Дата: 12.02.08 10:53
Оценка:
Доброго дня!!!
Есть файл наполненный текстовой информацией(.txt). В него периодичекси нужно вносить изменения, а именно, заменять один символ по известному указателю на место в файле. Ну так вот. Покапался в документации, но все найденные мной классы (FileStream, StreamWriter и тому подобные) данной функциональностью не обладают ( только могут добавлять в пустой, перезаписывая старый, либо просто в конец добавляют ). Конечно можно извратиться залезть в чистый WIN API (там я такое делал и не раз), или еще как.... Но неужели ж в NET нет такой полезной функции как простая вставка в файл?! Очень странно!!! Или возможно я не все облазил?! Кто знает помогите! Заранее благодарен за помощь!!!
Re: Запись в файл
От: Andrbig  
Дата: 12.02.08 10:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Доброго дня!!!

А>Есть файл наполненный текстовой информацией(.txt). В него периодичекси нужно вносить изменения, а именно, заменять один символ по известному указателю на место в файле. Ну так вот. Покапался в документации, но все найденные мной классы (FileStream, StreamWriter и тому подобные) данной функциональностью не обладают ( только могут добавлять в пустой, перезаписывая старый, либо просто в конец добавляют ). Конечно можно извратиться залезть в чистый WIN API (там я такое делал и не раз), или еще как.... Но неужели ж в NET нет такой полезной функции как простая вставка в файл?! Очень странно!!! Или возможно я не все облазил?! Кто знает помогите! Заранее благодарен за помощь!!!

Возможности такие же как в win32. Как в win32 ты делаешь "заменять один символ по известному указателю"?
Re: Запись в файл
От: Lloyd Россия  
Дата: 12.02.08 11:00
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Доброго дня!!!

А>Есть файл наполненный текстовой информацией(.txt). В него периодичекси нужно вносить изменения, а именно, заменять один символ по известному указателю на место в файле. Ну так вот. Покапался в документации, но все найденные мной классы (FileStream, StreamWriter и тому подобные) данной функциональностью не обладают ( только могут добавлять в пустой, перезаписывая старый, либо просто в конец добавляют ). Конечно можно извратиться залезть в чистый WIN API (там я такое делал и не раз), или еще как.... Но неужели ж в NET нет такой полезной функции как простая вставка в файл?! Очень странно!!! Или возможно я не все облазил?! Кто знает помогите! Заранее благодарен за помощь!!!

Так все-таки вставка или замена?
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[2]: Запись в файл
От: Аноним  
Дата: 12.02.08 11:07
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Так все-таки вставка или замена?


Именно замена:
Пример:
"0|http://rambler.ru" на
"1|http://rambler.ru"
Re[2]: Запись в файл
От: Аноним  
Дата: 12.02.08 11:14
Оценка:
Здравствуйте, Andrbig, Вы писали:


A>Возможности такие же как в win32. Как в win32 ты делаешь "заменять один символ по известному указателю"?



    CStdioFile file2;
    file.Open( "link4mt.txt", CFile::modeReadWrite | CFile::typeText );
    file.Seek( dPositionCURSORLocal, CFile::begin );
    file2.Write( "1", 1 );
    file2.Close();


все отлично работает!... Как это сделать в net вот в чем вопрос?!
Re[3]: Запись в файл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.02.08 11:18
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>
А>    CStdioFile file2;
А>    file.Open( "link4mt.txt", CFile::modeReadWrite | CFile::typeText );
А>    file.Seek( dPositionCURSORLocal, CFile::begin );
А>    file2.Write( "1", 1 );
А>    file2.Close();
А>


А> все отлично работает!... Как это сделать в net вот в чем вопрос?!


Точно так же, только следует еще и using использовать
... << RSDN@Home 1.2.0 alpha rev. 725 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[4]: Запись в файл
От: KarpP  
Дата: 12.02.08 11:29
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, <Аноним>, Вы писали:


А>>
А>>    CStdioFile file2;
А>>    file.Open( "link4mt.txt", CFile::modeReadWrite | CFile::typeText );
А>>    file.Seek( dPositionCURSORLocal, CFile::begin );
А>>    file2.Write( "1", 1 );
А>>    file2.Close();
А>>


А>> все отлично работает!... Как это сделать в net вот в чем вопрос?!


AVK>Точно так же, только следует еще и using использовать


Ага!... Интересно как мне это провернуть в C# без использования unmanaged code?!!!
Re[3]: Запись в файл
От: _Morpheus_  
Дата: 12.02.08 11:38
Оценка: 3 (1)
Здравствуйте, <Аноним>, Вы писали:

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



A>>Возможности такие же как в win32. Как в win32 ты делаешь "заменять один символ по известному указателю"?



А>
А>    CStdioFile file2;
А>    file.Open( "link4mt.txt", CFile::modeReadWrite | CFile::typeText );
А>    file.Seek( dPositionCURSORLocal, CFile::begin );
А>    file2.Write( "1", 1 );
А>    file2.Close();
А>


А> все отлично работает!... Как это сделать в net вот в чем вопрос?!


точно также:
    FileStream file = new FileStream("link4mt.txt", FileMode.Open, FileAccess.ReadWrite);
    file.Seek(dPositionCURSORLocal, SeekOrigin.Begin);
    file.Write(Encoding.ASCII.GetBytes("1"), 0, 1);
    file.Close();



но лучше с using:
using(FileStream file = new FileStream("link4mt.txt", FileMode.Open, FileAccess.ReadWrite))
{
    file.Seek(dPositionCURSORLocal, SeekOrigin.Begin);
    file.Write(Encoding.ASCII.GetBytes("1"), 0, 1);
}
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[5]: Запись в файл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.02.08 11:38
Оценка:
Здравствуйте, KarpP, Вы писали:

А>>>
А>>>    CStdioFile file2;
А>>>    file.Open( "link4mt.txt", CFile::modeReadWrite | CFile::typeText );
А>>>    file.Seek( dPositionCURSORLocal, CFile::begin );
А>>>    file2.Write( "1", 1 );
А>>>    file2.Close();
А>>>


А>>> все отлично работает!... Как это сделать в net вот в чем вопрос?!


AVK>>Точно так же, только следует еще и using использовать


KP>Ага!... Интересно как мне это провернуть в C# без использования unmanaged code?!!!


А где тебе нужен unmanaged code? Адресной арифметики я в твоем примере не вижу.
... << RSDN@Home 1.2.0 alpha rev. 725 on Windows Vista 6.0.6000.0>>
AVK Blog
Re[6]: Запись в файл
От: KarpP  
Дата: 12.02.08 11:57
Оценка:
Здравствуйте, AndrewVK, Вы писали:


AVK>А где тебе нужен unmanaged code? Адресной арифметики я в твоем примере не вижу.


Для использования функций WIN API32.......
Re[7]: Запись в файл
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.02.08 12:13
Оценка:
Здравствуйте, KarpP, Вы писали:

AVK>>А где тебе нужен unmanaged code? Адресной арифметики я в твоем примере не вижу.


KP>Для использования функций WIN API32.......


Я в твоем примере функций Win32 API не заметил. Это во-первых. Во-вторых для вызова этих самых функций unmanaged код не нужен. А в-третьих, я думал ты догадаешься, что вместо классов MFC следует использовать аналоги из .NET.
... << RSDN@Home 1.2.0 alpha rev. 725 on Windows Vista 6.0.6000.0>>
AVK Blog
Re: Запись в файл
От: KarpP  
Дата: 12.02.08 13:02
Оценка:
Здравствуйте, Аноним, Вы писали:

Большое Всем спасибо за помощь!!!
Особенно _Morpheus_ 'у — за пример кода!!!
Я уже немного погодя сообразил, что в своих экспериментах с FileStream допустил ошибку....
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.