예제 #1
0
 public FatDirectory(FatFileSystem aFileSystem, string aName, ulong firstCluster, Directory baseDirectory, ulong size)
     : base(aFileSystem, aName, baseDirectory)
 {
     FileSystem = aFileSystem;
     FirstClusterNum = firstCluster;
     Size = size;
 }
예제 #2
0
        public override List <Base> GetDirectoryListing(Directory baseDirectory)
        {
            if (baseDirectory == null)
            {
                baseDirectory = GetRootDirectory(null);
            }

            using (var xStream = new FatDirectoryStream((FatDirectory)baseDirectory))
            //using(var xStream = new TestFatDirectoryStream((FatDirectory)baseDirectory))
            {
                return(GetDirectoryContents((FatDirectory)baseDirectory, xStream));
            }
        }
예제 #3
0
파일: SentinelVFS.cs 프로젝트: killf/Cosmos
        private Directory DoGetDirectory(string aPath, Cosmos.System.FileSystem.FileSystem aFS)
        {
            if (aFS == null)
            {
                throw new Exception("File system can not be null.");
            }
            FatHelpers.Debug("In SentinelVFS.DoGetDirectory");
            FatHelpers.Debug("Path = " + aPath);
            string[] xPathParts = VFSManager.SplitPath(aPath);

            if (xPathParts.Length == 1)
            {
                return(GetVolume(aFS, aPath));
            }

            Directory xBaseDirectory = null;

            // start at index 1, because 0 is the volume
            for (int i = 1; i < xPathParts.Length; i++)
            {
                var xPathPart  = xPathParts[i];
                var xPartFound = false;
                var xListing   = aFS.GetDirectoryListing(xBaseDirectory);

                for (int j = 0; j < xListing.Count; j++)
                {
                    var xListingItem = xListing[j];
                    if (String.Equals(xListingItem.Name, xPathPart, StringComparison.OrdinalIgnoreCase))
                    {
                        if (xListingItem is Directory)
                        {
                            xBaseDirectory = (Directory)xListingItem;
                            xPartFound     = true;
                        }
                        else
                        {
                            throw new Exception("Path part '" + xPathPart + "' found, but not a directory!");
                        }
                    }
                }

                if (!xPartFound)
                {
                    throw new Exception("Path part '" + xPathPart + "' not found!");
                }
            }
            return(xBaseDirectory);
        }
예제 #4
0
        public override List<Base> GetDirectoryListing(Directory baseDirectory)
        {
            if (baseDirectory == null)
            {
                baseDirectory = GetRootDirectory(null);
            }

            using (var xStream = new FatDirectoryStream((FatDirectory)baseDirectory))
            //using(var xStream = new TestFatDirectoryStream((FatDirectory)baseDirectory))
            {
                return GetDirectoryContents((FatDirectory) baseDirectory, xStream);
            }
        }
예제 #5
0
 public Directory(FileSystem aFileSystem, string aName, Directory baseDirectory)
     : base(aFileSystem, aName, baseDirectory)
 {
 }
예제 #6
0
파일: SentinelVFS.cs 프로젝트: killf/Cosmos
 public override List <Base> GetDirectoryListing(Directory aParentDirectory)
 {
     throw new NotImplementedException();
 }
예제 #7
0
파일: VFSBase.cs 프로젝트: nstone101/Cosmos
 public abstract List<Base> GetDirectoryListing(Directory aEntry);