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


Автор: Zdvig 11.9.2005, 08:54
Есть код для записи из textBox'a в файл. Если файла нет, то он создается нормально, а если есть пишет "нет доступа или файл занят".
Точно такой же код в обработчике кнопки работает нормально. Не пойму в чем дело. smile
Код

private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    try 
      {
       FileStream filestream = new FileStream("1.txt",FileMode.OpenOrCreate,FileAccess.Write); // ругается
       filestream.SetLength(0);
      StreamWriter streamwriter = new StreamWriter(filestream);         
     streamwriter.WriteLine(textBox3.Text);
     streamwriter.Flush();
     streamwriter.Close();
     filestream.Close();
     }
   catch (Exception exp)
   {MessageBox.Show(exp.ToString());}
}




Автор: -ser- 12.9.2005, 04:37
очевидно этот файл открыт другим процессом, который установил на него блокировку, мол пока я не завершу работу с ним, никто не посмеет работать. надо посмотреть что за процесс его может держать и если это собственное приложение, то можно переписать его покорректнее.

Автор: Zdvig 12.9.2005, 13:27
Об этом я и сам знаю. Ничто, кроме моей программы файл не использует, и как видно из последних строк и она тоже.

Автор: Zdvig 12.9.2005, 13:38
Все разобрался, проблема была в другой части программы. Еще раз убедился, нужно проверять код, написанный другими. smile

Автор: AET 5.1.2008, 09:11
извените что поднимаю старую тему но уменя  проблема вот записываю в фаил
Код


 private void button1_Click(object sender, EventArgs e)
        {
            FileStream filestream = new FileStream("C:\\a.tes",FileMode.OpenOrCreate,FileAccess.Write);
            filestream.SetLength(0);
            StreamWriter streamwater = new StreamWriter(filestream);
            streamwater.Write(textBox1.Text);
            streamwater.Flush();
            streamwater.Close();
            filestream.Close();
        }


А вот считываю из фаила
Код

private void button2_Click(object sender, EventArgs e)
        {
            string sFileText;
            FileStream filestream = new FileStream("C:\\a.tes", FileMode.OpenOrCreate, FileAccess.Read);
            StreamReader streamreader = new StreamReader(filestream);
            char [] chBuf = new char[filestream.Length];
            streamreader.ReadBlock(chBuf, 0, (int)filestream.Length);
            sFileText = new string(chBuf);
            label1.Text += sFileText;
            radioButton1.Text += sFileText;
            filestream.Close();
            streamreader.Close();
        }

подскажите как можно чтобы запись в фаил происходила по строкам 
и считовало иэ каждои страки в разныие textBox1

Автор: mr.DUDA 5.1.2008, 13:26
Поменять
Код
streamwater.Write(textBox1.Text);

на
Код
streamwater.WriteLine(textBox1.Text);


Цитата(AET @  5.1.2008,  08:11 Найти цитируемый пост)
и считовало иэ каждои страки в разныие textBox1

Это, простите, как ?  smile 

Автор: AET 5.1.2008, 19:48
уменя 4 textBoxа вот при чтени из фаила каждая строка вставляло в разныие textBoxы зараниеблогодарен

Автор: mr.DUDA 5.1.2008, 21:18
Ну так читаем методом streamreader.ReadLine() и запихиваем в textBox1, textBox2 и т.д.

Автор: AET 15.1.2008, 14:49
подскажите  возможно ли чтобы считовать последню строку из фаила каждый 5 секунд

Автор: mr.DUDA 16.1.2008, 10:21
Возможно. Делаем таймер, по тику читаем streamreader.ReadLine

Автор: Naom 8.4.2008, 17:34
А подскажите, если у меня есть Ричтекст бокс и я использую:
Код

                 if (comboBox1->Text->Length >0){
                    if (textBox1->Text->Length > 0)
                    {
                        richTextBox1->Text +=comboBox1->Text+" ("+DateTime::Now.ToString("HH:mm:ss")+"): "+textBox1->Text + "\n";
                        textBox1->Text="";
                    }
                 }


а при зАкрытии формы:
Код

            String^ fileName = "Log.txt";

            StreamWriter^ sw = gcnew StreamWriter(fileName);
            sw->WriteLine("Файл создан {0}",DateTime::Now);
            sw->WriteLine("Имя пользователя : {0}",comboBox1->Text);
            sw->WriteLine(richTextBox1->Text);
            sw->Close();


все работает, сохроняет... но все сохроняет в одну строку =) и "\n" он вообще отоброжает ироглифом =)).. вообщем вы поняли =)) хочу лог сделать =)

Автор: mr.DUDA 8.4.2008, 17:44
Naom

Модератор: Пожалуйста, один топик - один вопрос.

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