void WriteToLocalTempStorage(IActivityIOOperationsEndPoint dst, IDev2PutRawOperationTO args, string tmp) { switch (args.WriteType) { case WriteType.AppendBottom: using (var s = dst.Get(dst.IOPath, _filesToDelete)) { _fileWrapper.WriteAllBytes(tmp, s.ToByteArray()); _fileWrapper.AppendAllText(tmp, args.FileContents); } break; case WriteType.AppendTop: using (var s = dst.Get(dst.IOPath, _filesToDelete)) { _fileWrapper.WriteAllText(tmp, args.FileContents); _common.AppendToTemp(s, tmp); } break; default: _fileWrapper.AppendAllText(tmp, args.FileContents); break; } }
public void Write(string file, string s, string header) { var path = Path.Combine(_outputDir, file); var csv = path + ".csv"; var tmp = path + ".tmp"; if (_file.Exists(tmp)) { try { _file.AppendAllText(csv, _file.ReadAllText(tmp)); _file.Delete(tmp); } catch (IOException) { } } if (!_file.Exists(csv)) { s = header + "\r\n" + s; } foreach (var f in new[] { csv, tmp }) { try { _file.AppendAllText(f, s + "\r\n"); break; } catch (IOException e) { if (f == tmp) { throw new LogIOException("報告書の出力中にエラーが発生しました。", e); } } } }
public string PutRaw(IActivityIOOperationsEndPoint dst, IDev2PutRawOperationTO args) { var result = ResultOk; try { FileLock.EnterWriteLock(); if (dst.RequiresLocalTmpStorage()) { var tmp = CreateTmpFile(); switch (args.WriteType) { case WriteType.AppendBottom: using (var s = dst.Get(dst.IOPath, _filesToDelete)) { _fileWrapper.WriteAllBytes(tmp, s.ToByteArray()); _fileWrapper.AppendAllText(tmp, args.FileContents); } break; case WriteType.AppendTop: using (var s = dst.Get(dst.IOPath, _filesToDelete)) { _fileWrapper.WriteAllText(tmp, args.FileContents); _common.AppendToTemp(s, tmp); } break; default: WriteDataToFile(args, tmp); break; } result = MoveTmpFileToDestination(dst, tmp, result); } else { if (_fileWrapper.Exists(dst.IOPath.Path)) { var tmp = CreateTmpFile(); switch (args.WriteType) { case WriteType.AppendBottom: _fileWrapper.AppendAllText(dst.IOPath.Path, args.FileContents); result = ResultOk; break; case WriteType.AppendTop: using (var s = dst.Get(dst.IOPath, _filesToDelete)) { _fileWrapper.WriteAllText(tmp, args.FileContents); _common.AppendToTemp(s, tmp); result = MoveTmpFileToDestination(dst, tmp, result); RemoveTmpFile(tmp); } break; default: WriteDataToFile(args, tmp); result = MoveTmpFileToDestination(dst, tmp, result); RemoveTmpFile(tmp); break; } } else { Dev2CRUDOperationTO newArgs = new Dev2CRUDOperationTO(true); CreateEndPoint(dst, newArgs, true); var path = dst.IOPath.Path; WriteDataToFile(args, path); } } } finally { FileLock.ExitWriteLock(); for (var index = _filesToDelete.Count - 1; index > 0; index--) { var name = _filesToDelete[index]; RemoveTmpFile(name); } } return(result); }