/// <summary> /// Run the subscribed functions to treat the bytes and return them /// </summary> /// <param name="filePart"></param> /// <param name="readerManager"></param> /// <param name="start"></param> /// <param name="end"></param> /// <returns></returns> private byte[] Treat(byte[] filePart, MemoryReaderFileManager readerManager, int start, int end) { byte[] currentState = filePart; foreach (var act in treatActions) { currentState = act(readerManager, filePart, start, end); } return(currentState); }
public static void Main() { string myPath = @"C:\Users\Alberto\Desktop\large.jpg"; string tempFileName = "tempFile"; int bufferSize = 1024; //read with forech MemoryReaderFileManager memoryReader = new MemoryReaderFileManager(bufferSize, myPath); foreach (var b in memoryReader) { //Console.Write(Convert.ToChar(b)); } Console.WriteLine("Read Finalized"); memoryReader.Close(); //read with while, is very slow memoryReader = new MemoryReaderFileManager(bufferSize, myPath); while (memoryReader.HasNext()) { //Console.Write((char)memoryReader.GetNext()); } memoryReader.Close(); Console.WriteLine("Read Finalized"); //Reading file and removing +1 in each byte of the file MemoryWriteFileManager writeManager = new MemoryWriteFileManager(new List <TreatByteArray>() { (reader, filerPart, start, end) => { for (int i = 0; i < end; i++) { filerPart[i] = (byte)(filerPart[i] + 1); } return(filerPart); } }, myPath, bufferSize, tempFileName); writeManager.Process(); Console.WriteLine("Write Finalized"); //Reading file and removing -1 in each byte of the file writeManager = new MemoryWriteFileManager(new List <TreatByteArray>() { (reader, filerPart, start, end) => { for (int i = 0; i < end; i++) { filerPart[i] = (byte)(filerPart[i] - 1); } return(filerPart); } }, @"C:\Users\Alberto\Desktop\tempFile", bufferSize, "tempFile.png"); writeManager.Process(); Console.WriteLine("Write Finalized"); }
/// <summary> /// Return the usable files in buffer, that is, if the content file is minor then sizer buffer, the /// end is limited to it /// </summary> /// <param name="readerManager"></param> /// <param name="start"></param> /// <param name="end"></param> private void SetStartEnd(MemoryReaderFileManager readerManager, out int start, out int end) { if (readerManager.finished) { start = 0; end = readerManager.LeftOver; } else { start = 0; end = readerManager.buffer.Length; } }
/// <summary> /// Read part files and processes them, then write result in a new file. /// </summary> private void TreatFile() { MemoryReaderFileManager readerManager = new MemoryReaderFileManager(this.bufferLength, filePath); long fileSize = readerManager.fileLength; int start, end; SetStartEnd(readerManager, out start, out end); byte[] pointer = Treat(readerManager.buffer, readerManager, start, end); Persist(this.writer, pointer, start, end); while (!readerManager.finished) { readerManager.Next(); SetStartEnd(readerManager, out start, out end); pointer = Treat(readerManager.buffer, readerManager, start, end); Persist(this.writer, pointer, start, end); } readerManager.Close(); this.Close(); }
public MyEnumarator(MemoryReaderFileManager manager) { this.manager = manager; }