Example #1
0
 public void Delete(CloudFile cloudFile)
 {
     string filePath = Path.Combine(this.rootPath, cloudFile.FullName());
     if (File.Exists(filePath))
     {
         File.Delete(filePath);
     }
 }
Example #2
0
        public virtual void Move(CloudFile source, string newPath)
        {
            var path = source.FullName();

            var oldFolder = Path.GetDirectoryName(path);
            var newFolder = Path.GetDirectoryName(newPath);
        }
Example #3
0
        public Stream Read(CloudFile cloudFile, OnProgress onProgress)
        {
            string filePath = Path.Combine(this.rootPath, cloudFile.FullName().TrimStart('/'));
            var result = new FileStream(filePath, FileMode.Open, FileAccess.Read);

            cloudFile.Fingerprint = HashHelper.MD5(result);

            result.Position = 0;
            return result;
        }
Example #4
0
        public void Write(CloudFile cloudFile, Stream stream, OnProgress onProgress)
        {
            var path = Path.Combine(this.rootPath, cloudFile.FullName());

            string directory = Path.GetDirectoryName(path);
            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            using (FileStream targetFileStream = new FileStream(path, FileMode.OpenOrCreate))
            {
                stream.CopyTo(targetFileStream);
            }
            File.SetLastWriteTime(path, cloudFile.Timestamp);
        }
Example #5
0
        public void Write(CloudFile cloudFile, Stream stream, OnProgress onProgress)
        {
            logger.DebugFormat("7zip, start writing [{0}]", cloudFile.FullName());

            cloudFile.Format = CloudFileFormat.SevenZip;
            //cloudFile.Fingerprint = HashHelper.MD5(cloudFile.Fingerprint + password);
            stream.Position = 0;

            // set the name into the package
            Dictionary<String, Stream> dir = new Dictionary<string, Stream>();
            dir[cloudFile.Name] = stream;

            // drive low level provider to write data
            using (MemoryStream compressedStream = new MemoryStream())
            {
                SevenZipCompressor compressor = new SevenZipCompressor();

                compressor.Compressing += new EventHandler<ProgressEventArgs>(
                    (o, p) => {
                        onProgress(cloudFile, ProcessTypes.Compress, (p.PercentDone * stream.Length / 100), stream.Length);
                        logger.InfoFormat("Compressing [{0}], [{1}% of {2}MB]", cloudFile.Name, p.PercentDone, (int)(stream.Length / 1024 / 1024));
                    });

                compressor.CompressStreamDictionary(dir, compressedStream, password);

                compressedStream.Position = 0;

                cloudFile.MD5 = cloudFile.Fingerprint;
                cloudFile.Fingerprint = HashHelper.MD5(cloudFile.Fingerprint+password);
                provider.Write(cloudFile, compressedStream, onProgress);
            }

            logger.DebugFormat("7zip, finish writing [{0}]", cloudFile.FullName());
        }