我在检查目录是否存在以及文件是否存在后尝试创建文件。
但是当我的程序到达这一行时,我得到的错误是我无法创建该文件,因为它已经被另一个进程使用了。 奇怪的是它不应该。 即使文件不存在。
File.Create(Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile).Close()
错误发生在代码的这一部分,catch不包括在内。 我知道我应该使用Using()但这应该也可以。 我不喜欢以这种方式重做这部分,直到它以这种方式工作。
if (!System.IO.Directory.Exists(System.IO.Directory.GetCurrentDirectory() + "\\Channels"))
{
connection.Logger.Log("making " + System.IO.Directory.GetCurrentDirectory() + "\\Channels", false, LogMode.Info);
System.IO.Directory.CreateDirectory(System.IO.Directory.GetCurrentDirectory() + "\\Channels");
}
string saveFile = Program.RemoveForbiddenFileCharacters(this.ChannelName + ".Channel");
string saveFilePath = System.IO.Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile;
FileStream fileStream = null;
StreamWriter streamWriter = null;
try
{
if (File.Exists(Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile))
{
File.Delete(Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile);
}
File.Create(Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile).Close();
streamWriter = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile);
//safe stuff to file
streamWriter.Close();
}
catch (Exception e)
答案 0 :(得分:1)
此处列出的代码没有任何问题,您需要提供更多答案信息。
I.e。 ,我创建了一个控制台应用程序,它包含以下c#代码,并且执行时没有问题并创建文件:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string saveFile = "test.txt";
try
{
if (File.Exists(Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile))
{
File.Delete(Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile);
}
File.Create(Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile).Close();
StreamWriter streamWriter = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\Channels\\" + saveFile);
//safe stuff to file
streamWriter.Close();
}
catch (Exception ex)
{
}
}
}
}
当然文件名必须是“硬编码”,但是您可以看到代码通常是相同的,如果您将其复制到新的控制台应用程序中,您也会看到它的工作原理。
答案 1 :(得分:0)
如果您刚刚删除了该文件,那么操作系统可能会阻止您在几秒钟内创建它,因为它还没有完全删除它。
为什么不打开文件进行写入,而不是删除并重新创建?