public bool HasValidExtension(string filename, OutputFormat format) { var validExtensions = GetValidExtensions(format); var ext = PathSafe.GetExtension(filename).ToLowerInvariant(); return(validExtensions.Contains(ext)); }
public void AddFileToQueue(string path) { PathCheck(path); var fileExtension = _pathSafe.GetExtension(path) ?? string.Empty; var legalFileTypes = new List <string> { ".ps", ".pdf" }; fileExtension = fileExtension.ToLowerInvariant(); if (!legalFileTypes.Contains(fileExtension)) { throw new COMException("Only .ps and .pdf files can be directly added to the queue."); } var spoolFolder = _spoolerProvider.SpoolFolder; if (!_spoolFolderAccess.CanAccess()) { throw new COMException("Accessing the spool folder failed."); } var isPdf = fileExtension.EndsWith(".pdf"); var fileHelper = isPdf ? _directConversionProvider.GetPdfConversion() : _directConversionProvider.GetPsConversion(); var infFile = fileHelper.TransformToInfFile(path, spoolFolder); _jobInfoQueue.Add(_jobInfoManager.ReadFromInfFile(infFile)); }
public void MoveOutputFiles() { //Ensure the the first file is the first in TempOutputFiles TempOutputFiles = TempOutputFiles.OrderBy(x => x).ToList(); _outfilebody = DetermineOutfileBody(); var isFirstFile = true; foreach (var tempOutputFile in TempOutputFiles) { var extension = PathSafe.GetExtension(tempOutputFile); var num = DetermineNumWithDigits(tempOutputFile); _currentOutputFile = _outfilebody + num + extension; //first file in interactive workflow if (isFirstFile && !Profile.AutoSave.Enabled && OnRetypeOutputFilename != null) { if (!CopyFileWithInteractiveOutputFilenameTemplateQuery(tempOutputFile, num, extension)) { return; //cancelled by user } } else { lock (LockObject) { var uniqueFilename = new UniqueFilename(_currentOutputFile, DirectoryWrap, FileWrap); if (Profile.AutoSave.Enabled && Profile.AutoSave.EnsureUniqueFilenames) { _currentOutputFile = EnsureUniqueFilename(uniqueFilename); } if (!CopyFile(tempOutputFile, _currentOutputFile)) { _currentOutputFile = EnsureUniqueFilename(uniqueFilename); if (!CopyFile(tempOutputFile, _currentOutputFile)) { //Throw exception after second attempt to copy failes. throw new DeviceException( "Error while copying to target file in second attempt. Process gets canceled.", 2); } } } } DeleteFile(tempOutputFile); OutputFiles.Add(_currentOutputFile); isFirstFile = false; } OutputFiles = OutputFiles.OrderBy(x => x).ToList(); }
/// <param name="originalFilename">Original file name</param> public UniqueFilenameBase(string originalFilename, IPathUtil pathUtil) { if (originalFilename == null) { throw new ArgumentNullException(nameof(originalFilename)); } _pathUtil = pathUtil; OriginalFilename = originalFilename; LastUniqueFilename = originalFilename; _directory = _pathSafe.GetDirectoryName(OriginalFilename) ?? ""; _fileBody = _pathSafe.GetFileNameWithoutExtension(OriginalFilename); _extension = _pathSafe.GetExtension(OriginalFilename); }
public UniqueFilename(string originalFilename, IDirectory directory, IFile file) { if (originalFilename == null) { throw new ArgumentNullException("originalFilename"); } _directoryWrap = directory; _fileWrap = file; OriginalFilename = originalFilename; LastUniqueFilename = originalFilename; _directory = _pathSafe.GetDirectoryName(OriginalFilename) ?? ""; _fileBody = _pathSafe.GetFileNameWithoutExtension(OriginalFilename); _extension = _pathSafe.GetExtension(OriginalFilename); }
/// <summary> /// Adds ellipsis "(...)" to a path with a length longer than 255. /// </summary> /// <param name="filePath">full path to file</param> /// <param name="length">maximum length of the string. This must be between 10 and MAX_PATH (260)</param> /// <returns>file path with ellipsis to ensure length under the max length </returns> public string EllipsisForPath(string filePath, int length) { if (filePath == null) { throw new ArgumentNullException(nameof(filePath)); } if (filePath.EndsWith("\\")) { throw new ArgumentException("The path has to be a file", nameof(filePath)); } if ((length < 10) || (length > MAX_PATH)) { throw new ArgumentException($"The desired length must be between 10 and {MAX_PATH}", nameof(length)); } if (filePath.Length > length) { const string ellipsis = "(...)"; var path = GetLongDirectoryName(filePath) ?? ""; var file = _pathSafe.GetFileNameWithoutExtension(filePath); var ext = _pathSafe.GetExtension(filePath); var remainingLength = length - path.Length - ellipsis.Length - ext.Length - 1; // substract -1 to account for the slash between path and filename if (remainingLength < 4) { throw new ArgumentException(filePath); } var partLength = remainingLength / 2; file = file.Substring(0, partLength) + ellipsis + file.Substring(file.Length - partLength, partLength); filePath = _pathSafe.Combine(path, file + ext); } return(filePath); }