public void QuickIOFileMetadataInstance() { Win32FindDataTestValue data = new Win32FindDataTestValue(); QuickIOFileMetadata instance = new QuickIOFileMetadata(@"C:\test.txt", data); instance.FullName.Should().Be(@"C:\test.txt"); instance.FullNameUnc.Should().Be(@"\\?\C:\test.txt"); instance.Name.Should().Be(@"test.txt"); }
/// <summary> /// Determined metadata of directory /// </summary> /// <param name="uncDirectoryPath">Path of the directory</param> /// <param name="findData"><see cref="Win32FindData"/></param> /// <param name="enumerateOptions">The enumeration options for exception handling</param> /// <returns><see cref="QuickIODirectoryMetadata"/> started with the given directory</returns> /// <exception cref="PathNotFoundException">This error is fired if the specified path or a part of them does not exist.</exception> internal static QuickIODirectoryMetadata EnumerateDirectoryMetadata( String uncDirectoryPath, Win32FindData findData, QuickIOEnumerateOptions enumerateOptions ) { // Results var subFiles = new List<QuickIOFileMetadata>( ); var subDirs = new List<QuickIODirectoryMetadata>( ); // Match for start of search var currentPath = QuickIOPath.Combine( uncDirectoryPath, QuickIOPatternConstants.All ); // Find First file var win32FindData = new Win32FindData( ); int win32Error; using ( var fileHandle = FindFirstSafeFileHandle( currentPath, win32FindData, out win32Error ) ) { // Take care of invalid handles if ( fileHandle.IsInvalid ) { if ( win32Error != Win32ErrorCodes.ERROR_NO_MORE_FILES ) { InternalQuickIOCommon.NativeExceptionMapping( uncDirectoryPath, win32Error ); } if ( EnumerationHandleInvalidFileHandle( uncDirectoryPath, enumerateOptions, win32Error ) ) { return null; } } // Treffer auswerten do { // Ignore . and .. directories if ( InternalRawDataHelpers.IsSystemDirectoryEntry( win32FindData ) ) { continue; } // Create hit for current search result var uncResultPath = QuickIOPath.Combine( uncDirectoryPath, win32FindData.cFileName ); #region File // if it's a file, add to the collection if ( !InternalHelpers.ContainsFileAttribute( win32FindData.dwFileAttributes, FileAttributes.Directory ) ) { var fileMetaData = new QuickIOFileMetadata( uncResultPath, win32FindData ); subFiles.Add( fileMetaData ); } #endregion #region Directory else { var dir = EnumerateDirectoryMetadata( uncResultPath, win32FindData, enumerateOptions ); subDirs.Add( dir ); } #endregion // Create new FindData object for next result win32FindData = new Win32FindData( ); } // Search for next entry while ( Win32SafeNativeMethods.FindNextFile( fileHandle, win32FindData ) ); } return new QuickIODirectoryMetadata( uncDirectoryPath, findData, subDirs, subFiles ); }