C#:创建后无法访问文件

时间:2016-07-28 07:25:52

标签: c# file directory system.io.file

我试图创建一个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);
    }

1 个答案:

答案 0 :(得分:2)

File.Create()返回FileStream,您可以使用它来执行文件IO。虽然FileStream是开放的(在您的情况下,由于您不会同时调用Close(),也不会调用Dispose(),但是对于谁知道多长时间它仍然是开放的),它不允许任何其他人访问它(实际上,事情有点复杂),这就是你的WriteAllLines()调用失败的原因。