我在创建文件时,使用文件是否存在方法判断。不存在就创建,存在跳过,这样看着没有什么问题。
if (!File.Exists(newFile))
{
File.Create(newFile);
}
接下来我就要像该文件序列化存储信息了。程序走到这步时报错,说文件正由另一进程使用,因此该进程无法访问此文件。
XmlSerializer pXmlSerizlizeTemp = new XmlSerializer(typeof(PropertyGridModel));
using (FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
{
pXmlSerizlizeTemp.Serialize(fs, tppModel);
}
经查询, System.IO.File.Create(fileName)返回的类型是FileStream。就是说文件创建后没有释放。在作用域内一直被占用。所以继续读取文件就会报错。问题好解决,关闭掉创建的文件流就可以了,提供两个方法
方法1:
if (!File.Exists(newFile))
{
File.Create(newFile).Close();
}
方法2:
if (!File.Exists(newFile))
{
using(File.Create(newFile))
{
// 读写文件操作。
}
}
问题得到解决。