Badanie klas BinaryReader i BinaryWriter
Pliki binarne to pliki zawierające dane w formacie, który nie jest czytelny dla człowieka. Są one często używane do przechowywania złożonych struktur danych, obrazów, audio, wideo i innych typów zawartości. Pliki binarne mogą być bardziej wydajne pod względem magazynu i wydajności w porównaniu z plikami tekstowymi, zwłaszcza w przypadku obsługi dużych ilości danych. Pliki binarne zazwyczaj nie mają być otwierane i odczytywane przez ludzi, ponieważ mogą zawierać dane w formacie specyficznym dla określonej aplikacji lub systemu. Zamiast tego są one przeznaczone do przetwarzania przez oprogramowanie, które rozumie format binarny.
Klasy BinaryReader i BinaryWriter są częścią klasy . Przestrzeń nazw platformy NET i są przeznaczone do odczytywania i zapisywania System.IO danych binarnych. Ważne jest, aby deweloperzy zrozumieli, kiedy i jak używać BinaryReaderBinaryWriter i do efektywnego manipulowania plikami i strumieniem danych.
Badanie przypadków użycia elementów BinaryReader i BinaryWriter
Chociaż używanie elementów StreamReader i StreamWriter jest często wystarczające w przypadku operacji na plikach tekstowych, istnieją scenariusze wymagające użycia elementów BinaryReader i BinaryWriter. Oto kilka typowych przypadków, w których mogą wystąpić pliki binarne i muszą być używane BinaryReader i/lub BinaryWriter:
- Pliki konfiguracji: Niektóre aplikacje używają plików konfiguracji binarnej do przechowywania ustawień i preferencji. Może być konieczne odczytanie lub zapisanie tych plików w celu zarządzania konfiguracjami aplikacji.
- Serializacja danych: pliki binarne są często używane do serializacji danych, gdzie złożone struktury danych są konwertowane na format binarny dla magazynu lub transmisji. Jest to przydatne w przypadku zapisywania danych, ustawień lub innych danych strukturalnych.
- Magazyn multimedialny: pliki binarne służą do przechowywania zawartości multimedialnej, takiej jak obrazy, dźwięk i wideo. Podczas obsługi plików multimedialnych w aplikacjach możesz pracować z plikami binarnymi.
- Komunikacja sieciowa: pliki binarne są używane w komunikacji sieciowej do wydajnego przesyłania danych. Pliki binarne mogą wystąpić podczas pracy nad projektami, które obejmują wysyłanie lub odbieranie danych za pośrednictwem sieci.
- Kompresja plików: pliki binarne są używane do kompresji plików, gdzie dane są kompresowane w formacie binarnym w celu zaoszczędzenia miejsca. Może być konieczne praca z skompresowanymi plikami w swoich projektach.
Przykłady praktyczne:
- Zapisywanie danych gry: Podczas tworzenia gry można użyć
BinaryWriterdo zapisania stanu gry (np. postępu gracza, wyników) w pliku binarnym iBinaryReaderzaładowania stanu gry po rozpoczęciu gry. - Obsługa plików multimedialnych: możesz użyć
BinaryReadernarzędzia do odczytywania plików obrazu lub audio iBinaryWriterzapisywania edytowanych plików multimedialnych. - Zarządzanie konfiguracją: możesz użyć
BinaryWriterpolecenia , aby zapisać ustawienia aplikacji w pliku binarnym iBinaryReaderzaładować te ustawienia podczas uruchamiania aplikacji.
Chociaż StreamReader operacje na plikach tekstowych są doskonałe i StreamWriterBinaryReader są przydatne w scenariuszach, BinaryWriter w których trzeba pracować z danymi binarnymi. Zrozumienie tych typowych przypadków pomoże Ci rozpoznać, kiedy używać każdej klasy i jak obsługiwać różne typy plików w swoich projektach.
Badanie przy użyciu elementów BinaryReader i BinaryWriter
Korzystanie z elementów BinaryReader i BinaryWriter
using System;
using System.IO;
using System.Text;
public class BinaryReaderWriterExample
{
public static void Main()
{
// Create a file to write to
using (FileStream fs = new FileStream("example.dat", FileMode.Create))
{
using (BinaryWriter writer = new BinaryWriter(fs))
{
// Write some data
writer.Write(42); // Integer
writer.Write(3.14); // Double
writer.Write("Hello, World!"); // String
}
}
// Read the data back
using (FileStream fs = new FileStream("example.dat", FileMode.Open))
{
using (BinaryReader reader = new BinaryReader(fs))
{
int intValue = reader.ReadInt32();
double doubleValue = reader.ReadDouble();
string stringValue = reader.ReadString();
Console.WriteLine($"Integer: {intValue}");
Console.WriteLine($"Double: {doubleValue}");
Console.WriteLine($"String: {stringValue}");
}
}
}
}
W tym przykładzie utworzymy plik binarny o nazwie example.dat i zapiszemy liczbę całkowitą, podwójną i ciąg do niego przy użyciu polecenia BinaryWriter. Następnie odczytamy dane z powrotem przy użyciu polecenia BinaryReader i wyświetlimy je w konsoli.
Używanie elementów BinaryReader i BinaryWriter z kodowaniem
using System;
using System.IO;
using System.Text;
public class BinaryReaderWriterEncodingExample
{
public static void Main()
{
// Create a file to write to
using (FileStream fs = new FileStream("example.dat", FileMode.Create))
{
using (BinaryWriter writer = new BinaryWriter(fs, Encoding.UTF8))
{
// Write some data with UTF-8 encoding
writer.Write(42); // Integer
writer.Write(3.14); // Double
writer.Write("Hello, World!"); // String
}
}
// Read the data back
using (FileStream fs = new FileStream("example.dat", FileMode.Open))
{
using (BinaryReader reader = new BinaryReader(fs, Encoding.UTF8))
{
int intValue = reader.ReadInt32();
double doubleValue = reader.ReadDouble();
string stringValue = reader.ReadString();
Console.WriteLine($"Integer: {intValue}");
Console.WriteLine($"Double: {doubleValue}");
Console.WriteLine($"String: {stringValue}");
}
}
}
}
W tym przykładzie utworzymy plik binarny o nazwie example.dat i zapiszemy liczbę całkowitą, podwójną i ciąg do niego przy użyciu BinaryWriter kodowania UTF-8. Następnie odczytujemy dane z powrotem przy użyciu BinaryReader tego samego kodowania i drukujemy je w konsoli.
Używanie elementu BinaryReader i BinaryWriter z funkcją FileStream
using System;
using System.IO;
using System.Text;
public class BinaryReaderWriterFileStreamExample
{
public static void Main()
{
// Create a file to write to
using (FileStream fs = new FileStream("example.dat", FileMode.Create))
{
using (BinaryWriter writer = new BinaryWriter(fs))
{
// Write some data
writer.Write(42); // Integer
writer.Write(3.14); // Double
writer.Write("Hello, World!"); // String
}
}
// Read the data back
using (FileStream fs = new FileStream("example.dat", FileMode.Open))
{
using (BinaryReader reader = new BinaryReader(fs))
{
int intValue = reader.ReadInt32();
double doubleValue = reader.ReadDouble();
string stringValue = reader.ReadString();
Console.WriteLine($"Integer: {intValue}");
Console.WriteLine($"Double: {doubleValue}");
Console.WriteLine($"String: {stringValue}");
}
}
}
}
W tym przykładzie utworzymy plik binarny o nazwie example.dat i zapiszemy liczbę całkowitą, podwójną i ciąg do niego za pomocą elementu BinaryWriterFileStream. Następnie odczytamy dane z powrotem przy użyciu BinaryReader tego samego FileStream polecenia i wyświetlimy je w konsoli programu .
Podsumowanie
Klasy BinaryReader i BinaryWriter to zaawansowane narzędzia do odczytywania i zapisywania danych binarnych w aplikacjach platformy .NET. Zapewniają one prosty sposób obsługi różnych typów danych, co sprawia, że są one niezbędne dla zadań obejmujących pliki binarne, serializacji danych i magazyn multimedialny. Zrozumienie ich użycia i scenariuszy pomoże w efektywnym zarządzaniu danymi binarnymi w projektach.