我试图创建一个json文件,如果它不存在,然后写入所有行。文件的创建有效,但我遇到的问题是File.WriteAllLines说"进程无法访问该文件,因为它正被另一个进程使用"。
这是我的代码:
public void generateFolderFiles(string folderToSearch, string fileToEdit) {
string[] filesToSearch = Directory.GetFiles(folderToSearch);
string completeJson = "";
for(int i=0;i<filesToSearch.Length;i++) {
try {
File.Delete(fileToEdit);
File.Create(fileToEdit);
} catch(Exception e){}
string[] fsLines = File.ReadAllLines(filesToSearch[i]);
string fsText = string.Join("", fsLines);
fsText=fsText.Replace("[", "").Replace("]", "");
completeJson+=fsText;
}
completeJson="["+completeJson+"]";
string[] lnes = new string[1]{completeJson};
File.WriteAllLines(fileToEdit, lnes);
}
答案 0 :(得分:2)
File.Create()
返回FileStream
,您可以使用它来执行文件IO。虽然FileStream
是开放的(在您的情况下,由于您不会同时调用Close()
,也不会调用Dispose()
,但是对于谁知道多长时间它仍然是开放的),它不允许任何其他人访问它(实际上,事情有点复杂),这就是你的WriteAllLines()
调用失败的原因。