Exemplo n.º 1
0
        static void InternalMoveFile(string srcFile, string dstFile)
        {
            Debug.Assert(!String.IsNullOrEmpty(srcFile));
            Debug.Assert(!String.IsNullOrEmpty(dstFile));
            FileSystemExtension srcExt = GetFileSystemForPath(srcFile, false);
            FileSystemExtension dstExt = GetFileSystemForPath(dstFile, false);

            if (srcExt == dstExt)
            {
                // Everything can be handled by the same file system
                srcExt.MoveFile(srcFile, dstFile);
            }
            else
            {
                // If the file system of the source and dest files are
                // different, decompose the Move operation into a Copy
                // and Delete, so every file system can handle its part
                dstExt.CopyFile(srcFile, dstFile, true);
                srcExt.DeleteFile(srcFile);
            }
        }
Exemplo n.º 2
0
        static void UpdateExtensions()
        {
            if (!Runtime.Initialized)
            {
                fileSystemChain = defaultExtension;
                return;
            }

            FileSystemExtension[] extensions = (FileSystemExtension[])AddinManager.GetExtensionObjects(addinFileSystemExtensionPath, typeof(FileSystemExtension));
            for (int n = 0; n < extensions.Length - 1; n++)
            {
                extensions [n].Next = extensions [n + 1];
            }

            if (extensions.Length > 0)
            {
                extensions [extensions.Length - 1].Next = defaultExtension;
                fileSystemChain = extensions [0];
            }
            else  {
                fileSystemChain = defaultExtension;
            }
        }