public FileInfoForm(FAT16DirEntry entry) { InitializeComponent(); this.MaximumSize = this.MinimumSize = this.Size; labelNombre.Text = entry.NombreDeDir; labelFechaCreacion.Text = entry.GetFechaCreacionString(); labelFechaMod.Text = entry.GetFechaModificacionString(); labelTamano.Text = entry.GetDirSizeString() + " bytes"; labelCluster.Text = "" + entry.GetFirstCluster(); }
public ListViewFAT16Entry(FAT16DirEntry entry, String[] datos) : base(datos) { Entry = entry; ListViewItemName = datos[0]; Tipo = datos[1]; TamanoArchivo = datos[2]; FechaCreacion = datos[3]; FechaModificacion = datos[4]; ClusterNumber = datos[5]; if (entry.esDirectorio) { this.ImageIndex = 1; } else { this.ImageIndex = 3; } }
public static ListViewFAT16Entry FactoryMethod(FAT16DirEntry entry) { String[] datos = new String[6]; datos[0] = entry.GetDirName(); datos[1] = entry.GetTipo(); long FileSize = entry.GetDirSize(); //KB if (FileSize >= (1024 * 1024 * 1024)) { float tamano = FileSize / (1024 * 1024 * 1024); datos[2] = "" + tamano + " GB"; } //MB else if (FileSize >= (1024 * 1024)) { float tamano = FileSize / (1024 * 1024); datos[2] = "" + tamano + " MB"; } //GB else if (FileSize >= 1024) { float tamano = FileSize / 1024; datos[2] = "" + tamano + " KB"; } else { datos[2] = "" + FileSize + " bytes"; } datos[3] = entry.GetFechaCreacionString(); datos[4] = entry.GetFechaModificacionString(); datos[5] = entry.GetFirstCluster().ToString(); return(new ListViewFAT16Entry(entry, datos)); }
private void ParseDirectoryCluster(FAT16Directory dir, MemoryStream dirStream) { byte[] EntryByteBuffer = new byte[32]; bool LFNFlag = false; while (dirStream.Read(EntryByteBuffer, 0, 32) > 0) { //0x00 y 0xE5 denotan que esa entrada esta libre if (EntryByteBuffer[0] != 0x00) { if (EntryByteBuffer[11] == 0x0F) { //Entrada de directory LFN (Long File Name) LFNFlag = true; FAT16LFNEntry tempLFNEntry = new FAT16LFNEntry(); //Copiamos los datos de esa entrada de directory a una estructura LFN tempLFNEntry.LDIR_Ord = EntryByteBuffer[0]; Array.Copy(EntryByteBuffer, 1, tempLFNEntry.LDIR_Name1, 0, 10); tempLFNEntry.LDIR_ATTR = EntryByteBuffer[11]; tempLFNEntry.LDIR_Type = EntryByteBuffer[12]; tempLFNEntry.LDIR_Checksum = EntryByteBuffer[13]; Array.Copy(EntryByteBuffer, 14, tempLFNEntry.LDIR_Name2, 0, 12); Array.Copy(EntryByteBuffer, 26, tempLFNEntry.LDIR_FstClustLO, 0, 2); Array.Copy(EntryByteBuffer, 28, tempLFNEntry.LDIR_Name3, 0, 4); TempLFNStack.Push(tempLFNEntry); } else { //Entrada de Directorio Normal FAT16DirEntry tempDirEntry = new FAT16DirEntry(); if (EntryByteBuffer[0] == 0xE5) { tempDirEntry.ignoreEntry = true; } Array.Copy(EntryByteBuffer, 0, tempDirEntry.DIR_NAME, 0, 8); Array.Copy(EntryByteBuffer, 8, tempDirEntry.DIR_EXT, 0, 3); tempDirEntry.DIR_ATTR = EntryByteBuffer[11]; tempDirEntry.DIR_NTRES = EntryByteBuffer[12]; tempDirEntry.DIR_CrtTimeTenth = EntryByteBuffer[13]; Array.Copy(EntryByteBuffer, 14, tempDirEntry.DIR_CrtTime, 0, 2); Array.Copy(EntryByteBuffer, 16, tempDirEntry.DIR_CrtDate, 0, 2); Array.Copy(EntryByteBuffer, 18, tempDirEntry.DIR_LstAccDate, 0, 2); Array.Copy(EntryByteBuffer, 20, tempDirEntry.DIR_FstClustHI, 0, 2); Array.Copy(EntryByteBuffer, 22, tempDirEntry.DIR_WrtTime, 0, 2); Array.Copy(EntryByteBuffer, 24, tempDirEntry.DIR_WrtDate, 0, 2); Array.Copy(EntryByteBuffer, 26, tempDirEntry.DIR_FstClustLO, 0, 2); Array.Copy(EntryByteBuffer, 28, tempDirEntry.DIR_FileSize, 0, 4); //Clonar Stack de LFNs if (LFNFlag && TempLFNStack.Count > 0) { tempDirEntry.ListaLFNEntries = new Stack <FAT16LFNEntry>(TempLFNStack); } if (TempLFNStack.Count > 0) { TempLFNStack.Clear(); } //Agregar Entry a RootDirectory dir.AddDirectory(tempDirEntry); } } EntryByteBuffer = new byte[32]; } //dir.ParseAllEntries(); }