dnisko
dnisko

Reputation: 137

save richtextbox to file C#

I am having trouble saving from richtextbox to .txt file

here is the code:

if (richTextBox1.Text != String.Empty)
            {
                string dir = @"c:\\logs\\" + DateTime.Today.ToString("dd_MMM_yy");
                string path = @"c:\\logs\\" + DateTime.Today.ToString("dd_MMM_yy") + "\\" + DateTime.Now.ToString("HH.mm.ss") + ".txt";
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                if (!File.Exists(path))
                {
                    File.Create(path);
                    richTextBox1.SaveFile(path, RichTextBoxStreamType.RichText);
                }

            }
            else
                MessageBox.Show("ERROR");

where I am going wrong ?! It says it cannot access the file because it is being used by another process... Any help would be welcome

Thanks, dnisko

Upvotes: 3

Views: 21855

Answers (5)

H. de Jonge
H. de Jonge

Reputation: 890

It seems the SaveFile() method is gone. So another way to save is with

TextRange range = new(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd);
FileStream fStream = new(fileName, FileMode.Create);
range.Save(fStream, DataFormats.Rtf);
fStream.Close();

Upvotes: 0

Omar_abdelslam
Omar_abdelslam

Reputation: 17

to save the file

private void btnSave_Click(object sender , EventArgs e)
{   
     string  _Path=@"C:\temp\Untitled.txt";
      if (!File.Exists(_Path))
        {
            StreamWriter SW = new StreamWriter(_Path);
            SW.WriteLine(richTextBox1.Text);
            SW.Close();
        }
        else if (File.Exists(_Path))
        {
            MessageBox.Show("This File is Exists");
            SaveFileDialog SFD = new SaveFileDialog();
            SFD.FileName = "";
            SFD.AddExtension = true;
            SFD.DefaultExt = ".txt";
            DialogResult result= SFD.ShowDialog();
            if(string.IsNullOrEmpty( SFD.FileName))
            {
                return;
            }
            else if(result==DialogResult.OK)
            {
                StreamWriter SW = new StreamWriter(SFD.FileName);
                SW.WriteLine(richTextBox1.Text);
                SW.Close();
            }
}

Upvotes: 0

Yoel Rodriguez
Yoel Rodriguez

Reputation: 1

 richTextBox1.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText);

Upvotes: 0

Damith
Damith

Reputation: 63065

you can avoid create file line because SaveFile will create file for you.

File.Create will return open stream for the file, you need to close it before access again. Do as below If you need to use create file anyway

using(File.Create(path));
richTextBox1.SaveFile(path, RichTextBoxStreamType.RichText);

Upvotes: 8

MichaC
MichaC

Reputation: 13380

File.Create returns the Stream of the file created.

As long as you do not dispose it, it will keep the file open

You can also use the Stream to directly write to the file. Using the using statement helps getting around any allocation issues.

        using (FileStream fs = File.Create(path))
        {
            Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file.");
            // Add some information to the file.
            fs.Write(info, 0, info.Length);
        }

Upvotes: 1

Related Questions