フォルダから読み込み中に、指定したファイルを内部から削除しようとしています。 私はこの問題を一度も起こすことができません。 しかし、これを初めて実行した後、私はもはや新しいファイルを作成することができません。古いファイルは削除されますが、新しいファイルは必要に応じて作成されなくなります。私の質問は、提供されたコードから、なぜタスクは一度は動作しますが、その後は動作しませんか?最初から削除されていますが、再作成はしません。ファイルが一度作成されてから停止します。
編集: 問題は権限にあります。 私はフォルダのセキュリティ設定を読み書きができるように変更しました。今私が望むようにできるようになりました。 しかし、他のユーザーがそうする方法を知らないため、可能であればセキュリティ設定を自動的に設定する必要があります。
if (Directory.Exists(path1))
{
if (File.Exists(path1 + "\\launchinfo.txt"))
{
File.Delete(path1 + "\\launchinfo.txt");
using (FileStream fs = File.Create(path1 + "\\launchinfo.txt"))
{
Byte[] info = new UTF8Encoding(true).GetBytes("[Connection]\n" + Form1.ipaddress + "\nport=0000\nclient_port=0\n[Details]\n" + Form1.playername);
fs.Write(info, 0, info.Length);
}
}
else
{
using (FileStream fs = File.Create(path1 + "\\launchinfo.txt"))
{
Byte[] info = new UTF8Encoding(true).GetBytes("[Connection]\n" + Form1.ipaddress + "\nport=0000\nclient_port=0\n[Details]\n" + Form1.playername);
fs.Write(info, 0, info.Length);
}
}
}
で使用されているかどうかを確認する方法は常にPath.Combineを使用してください。パスを連結しないでください。 – Ben
[なぜ非同期ファイルが削除されないのですか?](http://stackoverflow.com/questions/10606328/why-isnt-there-an-asynchronous-file-delete-in-net) –
'File.Delete()'は、Windows API ['DeleteFile()'](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363915(v=vs.85).aspx)を呼び出します。 ) 関数。これはブロッキングコールです。 –