Beispiel #1
0
 /// <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);
 }
Beispiel #2
0
        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");
        }
Beispiel #3
0
 /// <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;
     }
 }
Beispiel #4
0
        /// <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();
        }
Beispiel #5
0
 public MyEnumarator(MemoryReaderFileManager manager)
 {
     this.manager = manager;
 }