Example #1
0
            public ParsedPath(LargeFileSystem fs, string physicalFilePath, FileSystemEntity?physicalEntity = null)
            {
                this.LargeFileSystem = fs;

                this.PhysicalEntity   = physicalEntity;
                this.PhysicalFilePath = physicalFilePath;

                string dir = fs.PathParser.GetDirectoryName(physicalFilePath);
                string fn  = fs.PathParser.GetFileName(physicalFilePath);

                int[] indexes = fn._FindStringIndexes(fs.Params.SplitStr);
                if (indexes.Length != 1)
                {
                    throw new ArgumentException($"Filename '{fn}' is not a large file. indexes.Length != 1.");
                }

                string originalFileName      = fn.Substring(0, indexes[0]);
                string afterOriginalFileName = fn.Substring(indexes[0] + fs.Params.SplitStr.Length);

                if (afterOriginalFileName._IsEmpty())
                {
                    throw new ArgumentException($"Filename '{fn}' is not a large file.");
                }

                string extension;
                int    dotIndex = afterOriginalFileName.IndexOf('.');
                string digitsStr;

                if (dotIndex != -1)
                {
                    extension = afterOriginalFileName.Substring(dotIndex);
                    digitsStr = afterOriginalFileName.Substring(0, dotIndex);
                }
                else
                {
                    extension = "";
                    digitsStr = afterOriginalFileName;
                }

                if (digitsStr._IsNumber() == false)
                {
                    throw new ArgumentException($"Filename '{fn}' is not a large file. digitsStr.IsNumber() == false.");
                }

                if (digitsStr.Length != fs.Params.NumDigits)
                {
                    throw new ArgumentException($"Filename '{fn}' is not a large file. digitsStr.Length != fs.Params.NumDigits.");
                }

                this.DirectoryPath = dir;
                this.OriginalFileNameWithoutExtension = originalFileName;
                this.FileNumber = digitsStr._ToInt();
                this.Extension  = extension;

                string filename = $"{OriginalFileNameWithoutExtension}{Extension}";

                this.LogicalFilePath = fs.PathParser.Combine(this.DirectoryPath, filename);
            }
Example #2
0
        public static async Task <FileObject> CreateFileAsync(LargeFileSystem fileSystem, FileParameters fileParams, LargeFileSystem.ParsedPath[] relatedFiles, CancellationToken cancel = default)
        {
            cancel.ThrowIfCancellationRequested();

            LargeFileObject f = new LargeFileObject(fileSystem, fileParams, relatedFiles);

            try
            {
                await f.InternalInitAsync(cancel);
            }
            catch
            {
                f._DisposeSafe();
                throw;
            }

            return(f);
        }
Example #3
0
            public ParsedPath(LargeFileSystem fs, string logicalFilePath, long fileNumber)
            {
                this.LargeFileSystem = fs;

                this.LogicalFilePath = logicalFilePath;

                string fileName = fs.PathParser.GetFileName(logicalFilePath);

                if (fileName.IndexOf(fs.Params.SplitStr) != -1)
                {
                    throw new ApplicationException($"The original filename '{fileName}' contains '{fs.Params.SplitStr}'.");
                }

                string dir      = fs.PathParser.GetDirectoryName(logicalFilePath);
                string filename = fs.PathParser.GetFileName(logicalFilePath);
                string extension;
                int    dotIndex = fileName.IndexOf('.');
                string filenameWithoutExtension;

                if (dotIndex != -1)
                {
                    extension = fileName.Substring(dotIndex);
                    filenameWithoutExtension = fileName.Substring(0, dotIndex);
                }
                else
                {
                    extension = "";
                    filenameWithoutExtension = fileName;
                }

                this.DirectoryPath = dir;
                this.OriginalFileNameWithoutExtension = filenameWithoutExtension;
                this.FileNumber       = fileNumber;
                this.Extension        = extension;
                this.PhysicalFilePath = GeneratePhysicalPath();
            }
Example #4
0
        static void ModuleInit()
        {
            Local = new LargeFileSystem(new LargeFileSystemParams(LocalFileSystem.Local));

            LocalUtf8 = new LargeFileSystem(new LargeFileSystemParams(LocalFileSystem.LocalUtf8));
        }
Example #5
0
 protected LargeFileObject(FileSystem fileSystem, FileParameters fileParams, LargeFileSystem.ParsedPath[] relatedFiles) : base(fileSystem, fileParams)
 {
     this.LargeFileSystem     = (LargeFileSystem)fileSystem;
     this.UnderlayFileSystem  = this.LargeFileSystem.UnderlayFileSystem;
     this.InitialRelatedFiles = relatedFiles;
 }