0

テキストファイルを作成した後、追加しているリッチテキストボックスの「改行」をエスケープしています+大きな名前と大量のデータを含むファイルを作成するときに例外が発生します。

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;

namespace Saver
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public partial class MainForm : Form
    {
    string path = "";

    public MainForm()
    {
        //
        // The InitializeComponent() call is required for Windows Forms designer            
        //
        InitializeComponent();

        //
        // TODO: Add constructor code after the InitializeComponent() call.
        //
    }

    void Button1Click(object sender, EventArgs e)
    {
        if((textBox1.Text != "")&&(richTextBox1.Text != ""))
        {
            if(radioButton1.Checked == true)
                path = @"C:\Users\M.Waqas\Desktop\Saver\Saver\Files\";

            path += textBox1.Text + ".txt";

            FileStream fs = new FileStream(path,FileMode.Create);
            StreamWriter wr = new StreamWriter(fs);
            wr.Write(richTextBox1.Text);
            MessageBox.Show("Your file create on :" + "\n" + path);
            textBox1.Clear();
            richTextBox1.Clear();
            wr.Close();
            fs.Close();


        }
    }
}

}

4

1 に答える 1

2

書き換える代わりに .NET メソッドを使用するのはどうですか?

void Button1Click(object sender, EventArgs e)
{
      try{
           if(!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrEmpty(richTextBox1.Text))
           {
                if(radioButton1.Checked) 
                     path = @"C:\Users\M.Waqas\Desktop\Saver\Saver\Files\"; 

                path = System.IO.Path.Combine(path, textBox1.Text  ".txt");

                richTextBox1.SaveFile(path);  

           } else
                MessageBox.Show("No data");

      } catch (Exception x){
           MessageBox.Show("Error: "+x);
      }
}

注: パスは OP からコピーされました。ハードコードされたパスの代わりに SaveFileDialog を使用する必要があります (さらに悪いことに、ユーザー関連のハードコードされたパス)。ラジオボタンがチェックされていない場合、パスコードは不完全である可能性があります。

于 2013-02-11T17:49:11.967 に答える