<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

FileEncodingConverter

using Relativity.DataExchange.Io; using Relativity.DataExchange.Logger; using Relativity.Logging; using System.Text; using System.Threading; namespace Relativity.DataExchange.Export.VolumeManagerV2.Download.EncodingHelpers { public class FileEncodingConverter : IFileEncodingConverter { private readonly IFileEncodingRewrite _encodingRewrite; private readonly IFile _fileWrapper; private readonly ILog _logger; public FileEncodingConverter(IFileEncodingRewrite encodingRewrite, IFile fileWrapper, ILog logger) { _encodingRewrite = encodingRewrite; _fileWrapper = fileWrapper; _logger = logger; } public void Convert(string filePath, Encoding sourceEncoding, Encoding destinationEncoding, CancellationToken cancellationToken) { string text = filePath + ".tmp"; _logger.LogVerbose("Converting file {filePath} from {srcEnc} to {dstEnc}. Using temporary file {tmpFile}.", new object[4] { filePath.Secure(), sourceEncoding, destinationEncoding, text.Secure() }); try { _encodingRewrite.RewriteFile(filePath, text, sourceEncoding, destinationEncoding, cancellationToken); _logger.LogVerbose("Removing source file {filePath}.", new object[1] { filePath.Secure() }); _fileWrapper.Delete(filePath); _logger.LogVerbose("Moving temporary file from {tmpFile} to {dstFile}.", new object[2] { text.Secure(), filePath.Secure() }); _fileWrapper.Move(text, filePath); } finally { if (_fileWrapper.Exists(text)) { _logger.LogError("Error occurred during encoding conversion. Removing temporary file {tmpFile}.", new object[1] { text.Secure() }); _fileWrapper.Delete(text); } } } } }