public bool WriteNewFile(Folder Root, string FilePath, ref int Progress, ref int BlocksToWrite) { FATX_Browser.FATX.IOReader br = null; //Do a try... try { //Get our entry EntryData EData = GetNewEntryData(Root, new System.IO.FileInfo(FilePath).Name); //Create our entry in the folder CreateNewEntry(EData); //Create our new fatstuff to get our free blocks FATStuff fs = new FATStuff(Root); //Get our free blocks uint[] blocks = fs.GetFreeBlocks((int)(m.UpToNearestCluster(new System.IO.FileInfo(FilePath).Length, Root.PartInfo.ClusterSize) / Root.PartInfo.ClusterSize), EData.StartingCluster, 0, false); //Make a new list for the blocks... List<uint> COCKS = blocks.ToList<uint>(); //Insert the beginning block at the 0 index COCKS.Insert(0, EData.StartingCluster); //Make the cocks an array blocks = COCKS.ToArray(); //Write the FAT chain WriteFATChain(blocks, Root); //Create our binary reader to read our file br = new FATX_Browser.FATX.IOReader(new System.IO.FileStream(FilePath, System.IO.FileMode.Open)); for (int i = 0; i < blocks.Length; i++) { WriteToCluster(m.GetBlockOffset(blocks[i], Root), br.ReadBytes(0x200)); } br.Close(); return true; } catch(Exception e) { try { br.Close(); } catch { } throw e; } }