文件创建一次,然后停止
本文关键字:然后 一次 文件创建 | 更新日期: 2023-09-27 18:07:16
我正在尝试从文件夹中读取,并从里面删除指定的文件。我能做到这一次没有任何问题。然而,在第一次这样做之后,我不再能够创建新的文件。旧的文件仍然被删除,但是新文件不再被创建。我的问题是;从代码提供的为什么任务工作一次,而不是之后?它会在第一次创建后被删除,但不会重新创建。
编辑:问题出在权限上。我修改了文件夹的安全设置,允许读/写,现在我可以随心所欲了。但是,如果可能的话,我需要它自动设置安全设置,因为其他用户可能不知道如何设置。
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);
}
}
}
您还没有发布任何可能遇到的异常-如果您有异常,请发布。
也就是说,当你试图删除文件时,你可能会遇到File in use by another process
-特别是如果你在创建文件后调用你的函数。
string fullPath = Path.Combine(path1, "launchinfo.txt");
if (Directory.Exists(path1))
{
if (File.Exists(fullPath))
{
// Call a method to check if the file is in use.
if (IsFileLocked(new FileInfo(fullPath)){
// do something else because you can't delete the file
} else {
File.Delete(fullPath);
}
}
using (FileStream fs = File.Create(fullPath))
{
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);
}
}
检查文件是否正在被另一个进程使用的方法
protected virtual bool IsFileLocked(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
}
catch (IOException)
{
return true;
}
finally
{
if (stream != null)
stream.Close();
}
//file is not locked
return false;
}