2017-06-02 12 views
1

C#の初心者ですが、とにかく練習に取り掛かっていましたが、StreamWriterだけを使ってプロジェクトのBinフォルダにあるtxtファイルに書き込むことができますFile.CreateText、私はパスを追加しようとすると私はファイルを取得し、それを追加するが、何もそれに書き込まれません。ちょうどあなたがこのために文を使用して使用する必要がありますWinFormApp基本txtファイルが作成されていますが、書き込まれていません

try 
{ 
    string mypath = @"C:\Temp\Rocket League Tracker.txt"; 

    StreamWriter RocketLeagueTrackerFile; 

    RocketLeagueTrackerFile = File.CreateText(mypath); 
    RocketLeagueTrackerFile.WriteLine("Rocket League Tracking"); 

    File.AppendAllText(mypath, MyGameResult + Environment.NewLine); 

    RocketLeagueTrackerFile.Close(); 
} 
catch 
{ 
} 
+0

は、try /キャッチを外し、おそらくあなたは問題 – Steve

+0

代わりのキャッチが表示されます(例外例){Console.WriteLineを(ex.Message)キャッチを追加します。 }問題を確認します。より多くの助けを求めるメッセージをここに入れてください。あなたのコードの 'MyGameResult'が何であるかはっきりしません – Media

答えて

2

あなたがそのファイルのロックを取得しているFile.CreateTextを呼び出します。
File.AppendAllTextの次の呼び出しでは、File.CreateTextから返されたStreamWriterは使用されませんが、同じファイルのロックを再度取得しようとします。
これは例外(IOException)につながりますが、空のtry/catchを追加したため表示できません。

例外のない状況を隠し、プログラムがユーザーのデスクトップで説明なしにクラッシュする可能性があるため、空のtry/catchを理由なしで使用しないでください。
迷惑なバグを探していて、SOを(今のように)呼び出す必要があります。あなたが本当にあなたのユーザーにメッセージを表示する必要がある場合は

はその後

..... 
catch(Exception ex) 
{ 
    MessageBox.Show("Unexpected Error:" + ex.Message); 
    // Rethrow the exception to upper layers.... 
    throw; 
} 

あなたは

が開きFile.AppendAllTextは、MSDNによるのでFile.CreateTextを必要としない、と述べましたファイルに追加し、指定された文字列をファイルに追加してから、 がファイルを閉じます。ファイルが存在しない場合、このメソッドは、ファイルの を作成し、指定された文字列をファイルに書き込み、ファイルを閉じます。

string mypath = @"C:\Temp\Rocket League Tracker.txt"; 
string title = "Rocket League Tracking"; 
File.AppendAllText(mypath, title + Environment.NewLine + 
          MyGameResult + Environment.NewLine); 

それとも、常にその名前を持つ以前のファイルを上書きする必要がある場合File.WriteAllTextでFile.AppendAllTextを交換してください。

+0

これはうまくいきました!ありがとう、私は心から感謝します。私は例外が発生していることに気付き、それに追いつくつもりでしたが、あなたはそれに触れました。 – PTK

2

使用

イム。 File.CreateTextはロックファイルです。

using(RocketLeagueTrackerFile = File.CreateText(mypath)) 
{    
    RocketLeagueTrackerFile.WriteLine("Rocket League Tracking"); 
} 

File.AppendAllText(mypath, MyGameResult + Environment.NewLine); 
0

ます。また、使用することができます。

File.WriteAllText(mypath ,"Rocket League Tracking"); 
関連する問題