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


Автор: PashaSem 3.3.2007, 12:46
Всем Привет!
Подскажите как сделать чтоб при очередном вызове если размер привышает установленный содержимое файла удалялось.
Код

try
            {
                // Create an instance of StreamReader to read from a file.
                // The using statement also closes the StreamReader.
                using (StreamReader sr = new StreamReader("log.txt"))
                {
                    int Number = sr.Dispose();
                    String line;
                    // Read and display lines from the file until the end of 
                    // the file is reached.
                    while ((line = sr.ReadLine()) != null)
                    {
                        listBox1.Items.Add(line);
                    }
                }
            }
            catch (Exception en)
            {
                // Let the user know what went wrong.
                listBox1.Items.Add("The file could not be read:");
                Console.WriteLine(en.Message);
            }

Спасибо! :qstn 

Автор: Idsa 3.3.2007, 14:03
Твой код меня пугает smile. Ты создаешь StreamReader, тут же его уничтожаешь, а потом пытаешься что-то считать.
А вообще в век баз данных задача довольно странная...

Автор: PashaSem 3.3.2007, 15:04
Я сохраняю в этот файл от силы 50 строк!
И базу делать для этого не целесообразно.

Автор: Idsa 3.3.2007, 15:35
Цитата(PashaSem @  3.3.2007,  15:04 Найти цитируемый пост)
Я сохраняю в этот файл от силы 50 строк!

Ну а если всего 50 строк, какой смысл ограничивать?
Опиши подробнее проблему.

Автор: PashaSem 3.3.2007, 16:16
Я кидаю в файл запись 
Код

  StreamWriter w = File.AppendText("log.txt");
                            Log((szDeviceList23 + "\t\t" + ErrorMessage).ToString(), w);
                            w.Close();

 и потом его вызываю кодом котрый приводил раньше 
Но мне нужно чтоб при очередной записи или вызове если размер файла log.txt привышает какое то значение содержимое файла очищалось.

Как это сделать подскажите?

Спасибо!

Автор: Idsa 3.3.2007, 16:58
Т. е. тебя интересует физический размер файла, а не количество записей? Если так, то делаем следующее:
Код

FileInfo fi = new FileInfo("log.txt");
      long size = fi.Length;
      if (size > maxSize)
        ...

Не забудь подключить System.IO.

Автор: Gelis 5.3.2007, 17:57
Код

FileStream fs=new FileStream();
fs.SetLength(позиция_до_ какой_урезать_файл);

Автор: -ser- 10.3.2007, 11:53
я бы не постил такую чепуху, но вот сам давече как раз изобрел лог файл, который не превышает определенный размер, причем новый блок записи пишется в начало. как никогда почему-то получил огромное удовольствие от положительного результата.

Код

int iMaxSize = 9192;
string sPrevContents = string.Empty;
string sNewRecord = "something to be added ";

if( File.Exists( sLogFileName ) )
            {
                using( StreamReader sr = new StreamReader( sLogFileName ) )
                {
                    sPrevContents = sr.ReadToEnd();
                }
            }

         sNewRecord += sPrevContents; // а лучше использовать StringBuilder

            if( sNewRecordLength > iMaxSize )
            {
                sNewRecord = sNewRecord.Remove( iMaxSize );    
            }

            using( StreamWriter sw = new StreamWriter( sLogFileName ) )
            {
                sw.WriteLine( sNewRecord );
            }

   smile 

ну а если сурьезно, то на кодепроджект один мен вон целую диссертацию написал как вставлять текст в файл. признаюсь сам не читал, но судя по оценке что-то заумное. 
http://www.codeproject.com/useritems/InsertTextInCSharp.asp

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