Advertisement
fcamuso

Streams - 2a parte

Jul 21st, 2021
1,229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.10 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3.  
  4. namespace Streams_A
  5. {
  6.   class Program
  7.   {
  8.     static void Main(string[] args)
  9.     {
  10.  
  11.      
  12.       using (FileStream f = new FileStream("immagine.bmp", FileMode.Open, FileAccess.ReadWrite))
  13.       {  
  14.         Console.WriteLine(f.Length);
  15.         Console.WriteLine($"Leggibile {f.CanRead}");
  16.         Console.WriteLine($"Scrivibile {f.CanWrite}");
  17.         Console.WriteLine($"Seekable {f.CanSeek}");
  18.         Console.WriteLine($"Timeout {f.CanTimeout}");
  19.  
  20.         //string tipo_immagine = "";
  21.         //byte[] buffer = new byte[2];
  22.         //f.Read(buffer, 0, 2);
  23.         //Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffer, 0, 2));
  24.        
  25.         f.Seek(2, SeekOrigin.Current);
  26.         byte[] dimensione_buffer = new byte[4];
  27.         f.Read(dimensione_buffer, 0, 4);
  28.        
  29.         //if (BitConverter.IsLittleEndian)
  30.         //  Array.Reverse(dimensione_buffer); //Little / Big Endian ??
  31.        
  32.         UInt32 dimensione = BitConverter.ToUInt32(dimensione_buffer, 0);
  33.         Console.WriteLine($"Dimensione letta direttamente dal file: {dimensione}");
  34.  
  35.         f.Seek(-4, SeekOrigin.Current);
  36.         f.Read(dimensione_buffer, 0, 4);
  37.         dimensione = BitConverter.ToUInt32(dimensione_buffer, 0);
  38.         Console.WriteLine($"Dimensione letta direttamente dal file: {dimensione}");
  39.  
  40.         f.Seek(0, SeekOrigin.Begin);
  41.         byte[] buffWrite = new byte[2] {(byte)'F', (byte)'C' };
  42.         f.Write(buffWrite);
  43.  
  44.         f.Seek(0, SeekOrigin.Begin);
  45.         byte[] buffRead = new byte[2];
  46.         f.Read(buffRead);
  47.         Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffRead, 0, 2));
  48.  
  49.         f.Seek(0, SeekOrigin.Begin);
  50.         buffRead = new byte[100000];
  51.  
  52.         int byteAvanzatiDaLeggere = 100000;
  53.         int byteLetti = 0;
  54.  
  55.         while(byteAvanzatiDaLeggere>0)
  56.         {
  57.           int letti = f.Read(buffRead, byteLetti, byteAvanzatiDaLeggere);
  58.           Console.WriteLine(letti);
  59.  
  60.           if (letti == 0) break;
  61.           byteLetti += letti;
  62.           byteAvanzatiDaLeggere -= letti;
  63.         }
  64.       }
  65.     }
  66.   }
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement