Esempio n. 1
0
        private String GetRawFileNameFromBlobId(BlobId blobId, String fileName)
        {
            var           id            = blobId.Id;
            var           stringPadded  = String.Format("{0:D15}", id / 1000);
            StringBuilder directoryName = new StringBuilder(15);

            for (int i = 0; i < Math.Min(stringPadded.Length, 15); i++)
            {
                directoryName.Append(stringPadded[i]);
                if (i % _folderPrefixLength == (_folderPrefixLength - 1))
                {
                    directoryName.Append(System.IO.Path.DirectorySeparatorChar);
                }
            }
            var finalDirectory = Path.Combine(BaseDirectory, blobId.Format, directoryName.ToString());

            Directory.EnsureDirectory(finalDirectory);

            return(finalDirectory + id + "." + Path.GetFileName(fileName));
        }
        /// <summary>
        /// Create a series of subdirectories that avoid cluttering thousands
        /// of files inside the very same folder.
        /// The logic is the following, we want at most 1000 file in a folder, so
        /// we divide the id by 1000 and we pad to 15 number, then we subdivide
        /// the resulting number in blok by 4, each folder will contain at maximum
        /// 1000 folders or files.
        /// </summary>
        /// <param name="blobId"></param>
        /// <returns></returns>
        public String GetFileNameFromBlobId(BlobId blobId)
        {
            var           id            = blobId.Id;
            var           stringPadded  = String.Format("{0:D15}", id / 1000);
            StringBuilder directoryName = new StringBuilder(15);

            for (int i = 0; i < Math.Min(stringPadded.Length, 15); i++)
            {
                directoryName.Append(stringPadded[i]);
                if (i % 3 == 2)
                {
                    directoryName.Append(System.IO.Path.DirectorySeparatorChar);
                }
            }
            var finalDirectory = Path.Combine(_baseDirectory, blobId.Format, directoryName.ToString());

            Directory.EnsureDirectory(finalDirectory);

            return(finalDirectory + id + ".blob");
        }
Esempio n. 3
0
 public DirectoryManager(String baseDirectory, Int32 folderPrefixLength)
 {
     BaseDirectory       = baseDirectory;
     _folderPrefixLength = folderPrefixLength;
     Directory.EnsureDirectory(baseDirectory);
 }
 public DirectoryManager(String baseDirectory)
 {
     _baseDirectory = baseDirectory;
     Directory.EnsureDirectory(baseDirectory);
 }