2016-04-08 15 views
1

StreamWriterを使用して.txtファイルを作成しようとしています。テキストファイルを読み込み、そのファイルの内容を自動的に新しい.txtファイルに書き込んで、同じファイル名でアプリケーションルートに格納したいと考えています。 (ホープは意味をなさないと思っています)
現在、私はそれがすべて動作するように解決策を見つけることができません。私のコードを見てください。どんな指針も大変ありがとうございます。StreamWriterが書かない

private void button1_Click(object sender, EventArgs e) 
{ 
    //read in a .txt file// this all works fine 
    OpenFileDialog op = new OpenFileDialog(); 
    if (op.ShowDialog() == DialogResult.OK) 
    richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText); 
    this.Text = op.FileName; 

    string filename = op.FileName; 


    // not working // 
    //create new .txt file contaning module notes 

    StreamWriter writer = new StreamWriter("..\\"op.FileName".txt"); 
    using (writer) 
    { 
     writer.Write(richTextBox1); 
    } 
} 
+0

usingステートメント内で宣言を行う必要があります。 – Bauss

+0

まず、IDEが指摘する構文エラーを修正する必要があります。 – derpirscher

答えて

10

これで問題のカップルは、まず、あります:

StreamWriter writer = new StreamWriter("..\\"op.FileName".txt"); 

は次のようになります。

string filename = Path.GetFilename(op.FileName); 
StreamWriter writer = new StreamWriter(".\\Notes\\" + filename); 

その後、別の問題がここにある:

using (writer) 
{ 
    writer.Write(richTextBox1); 
} 

してみてください。

using (writer) 
{ 
    writer.Write(richTextBox1.Text); 
} 

あなたは基本的にはstringを期待するとして、もちろん動作しませんRichTextBoxインスタンスを、書き込みしようとしています。

ます。また、この再検討することもできます。ここでif構築物は唯一あなたがオープンをキャンセルするかのように危険な領域に以下の行を置くことの後にその行を、検討する

if (op.ShowDialog() == DialogResult.OK) 
richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText); 
this.Text = op.FileName; 

を、それはまだよ走る

だから、一緒にすべてを置く:

using (OpenFileDialog op = new OpenFileDialog()) 
{  
    op.Filter = "Text Files|*.txt"; // Nice to have a filter 

    if (op.ShowDialog() == DialogResult.OK) 
    { 
     richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText); 

     this.Text = op.FileName; 
     string filename = Path.GetFilename(op.FileName); 
     StreamWriter writer = new StreamWriter(".\\Notes\\" + filename); 

     using (writer) 
     { 
      writer.Write(richTextBox1.Text); 
     } 
    } 

} // Clean up the OpenFileDialog instance 

これはNotesディレクトリが存在を前提としています。あなたがそれを作成しなければならないならば。また、ディレクトリが作業ディレクトリにあるとします。通常は実行ファイルが実行されているディレクトリです。

+0

@ vc74私はポイントの愛ではありません;) – Lloyd

+0

Thanks @ Lloyd、2番目の部分はうまく機能しますが、StreamWriter writer = new StreamWriter( ".. \\" + op.FileName); 「mscorlib.dllに「System.NotSupportedException」型の未処理の例外が発生しました」というエラーが発生します。これを引き起こしている可能性のあるアイデアは何ですか?ありがとう – JonnyAppleseed

+0

@ JonnyAppleseed落としてください。\\あなたがすでにパスを持っているOpenFileDialogから来て、レベルを上がると言います。 – Lloyd

関連する問題