private string InitFilePath(string filePath) { if (!_isShadowCopy) { return(filePath); } var gen = new DefaultPathNameGenerator(postfix: ".xlsx"); var util = new DefaultTempUtil(fileNameGen: gen); var result = util.CreateFile(); using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var ws = new FileStream(result, FileMode.Create, FileAccess.Write, FileShare.None)) { var read = 0L; var buffer = new byte[4096]; while (read < fs.Length) { var currentRead = fs.Read(buffer, 0, buffer.Length); read += currentRead; if (currentRead != 0) { ws.Write(buffer, 0, currentRead); } } } } return(result); }