ファイルが存在するかどうかを確認します
if(!File.Exists(myPath))
{
File.Create(myPath);
}
ただし、この新しく作成したファイルでStreamReader
を作成しようとすると、次のようなエラーが表示されます。
プロセスは別のプロセスで使用されているため、ファイル「[my file path here]」にアクセスできません。
作成後に閉じるように呼び出すことができるFile.Close(myPath)
がないので、後でプログラムで開くことができるようにこのリソースを解放するにはどうすればよいですか?
File.Create(string)
は FileStream
class のインスタンスを返します。このオブジェクトで Stream.Close()
メソッドを呼び出して、オブジェクトを閉じ、使用しているリソースを解放できます。
var myFile = File.Create(myPath);
myFile.Close();
ただし、FileStream
は IDisposable
を実装しているため、 using
statement (一般的にこのような状況を処理するための好ましい方法)を利用できます。これにより、ストリームが終了したときにストリームが閉じられ、適切に破棄されます。
using (var myFile = File.Create(myPath))
{
// interact with myFile here, it will be disposed automatically
}
関数はFileStream
オブジェクトを返します。したがって、戻り値を使用してStreamWriter
を開くか、オブジェクトの適切なメソッドを使用して閉じることができます。
File.Create(myPath).Close();
File.Create
は、Close()
onで呼び出すことができるFileStream
オブジェクトを返します。
その理由は、ファイルを作成するメソッドからFileStreamが返されるためです。 FileStreamを変数に戻すか、File.Createの後に変数から直接closeメソッドを呼び出す必要があります。
Usingブロックを使用して、このようなタスクのIDisposeパターンを実装できるようにすることをお勧めします。おそらくもっとうまくいくかもしれないものは次のようになります:
if(!File.Exists(myPath)){
using(FileStream fs = File.Create(myPath))
using(StreamWriter writer = new StreamWriter(fs)){
// do your work here
}
}
File.WriteAllText(file,content)
書き込みを閉じる
File.WriteAllBytes-- type binary
:)