2017-10-13 6 views
-1

次のファイルが存在するかどうかを確認するプログラムを作成しようとしています。作成していない場合は、ファイルを作成して名前を書き込みます。しかし、プログラムはファイルを作成せず、例外をスローしません。コードがテキストファイルを作成していないC#

 string verify; 
     string name = textBox1.Text; 
     string path = Path.Combine(@"C:\assets\"+ name + ".txt"); 
     if (!File.Exists(path)) 
     { 
      File.Create(path); 
      File.WriteAllText(path, name); 
     } 
     else if (File.Exists(path)) 
     { 
      verify = File.ReadAllText(path); 
      if (verify == name) 
      { 
       return; 
      } 
     } 
+0

パス変数の値を質問に追加できますか? – Hackerman

+2

'string verify;'にブレークポイントを設定し、デバッガでF10キーを押して、ウォッチウィンドウの各変数を調べたとき(またはその上にマウスを置いたとき)に行ったことは何でしたか? 'File.Exists(path)'を選択してマウスの上にマウスを置くと、それが何を返すかを見ることもできます。 –

+1

[Visual Studioでデバッガを使用する方法](https://msdn.microsoft.com/en-us/library/mt243867.aspx) – mason

答えて

0
  1. フォルダC:\ assetsが存在することを確認してください。そうでない場合、プログラムは例外をスローします。
  2. File.Create(path)はファイルを作成しますが、File.WriteAllText(path、name)を呼び出すと、ファイルがまだ開かれている可能性があるため例外がスローされます。したがって、File.Create(path)、File.WriteAllText(path、name)を削除する必要があります。ファイルを作成した後、ファイルを閉じます。
0

私はあなたのコードからFile.Create(path);を取り除き、何が起こるかを見ます。 File.WriteAllText(path, name);はあなたのためにファイルを作成しますので、不要であり、あなたのコードのどこかであなたを吐き出しているIO例外を取得している可能性があります。

関連する問題