Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
iOS 9.0 veya macOS 10.11 'i (ve daha yenisini) hedefleyen Xamarin uygulamaları, sıkıştırmak (kodlamak) ve verileri açmak (kodunu çözmek) için Sıkıştırma Çerçevesi'ni kullanabilir. Xamarin.iOS, Stream API'sinin ardından bu çerçeveyi sağlar. Sıkıştırma çerçevesi, geliştiricilerin geri çağırma veya temsilci kullanmaya gerek kalmadan sıkıştırılmış ve sıkıştırılmış verilerle normal akışlar gibi etkileşim kurmasına olanak tanır.
Sıkıştırma çerçevesi aşağıdaki algoritmalar için destek sağlar:
- LZ4
- LZ4 Raw
- Lzfse
- Lzma
- Zlib
Sıkıştırma çerçevesinin kullanılması, geliştiricilerin üçüncü taraf kitaplıkları veya NuGet'ler olmadan sıkıştırma işlemleri gerçekleştirmesine olanak tanır. Bu, dış bağımlılıkları azaltır ve sıkıştırma işlemlerinin tüm platformlarda (en düşük işletim sistemi gereksinimlerini karşıladıkları sürece) desteklenmesine olanak sağlar.
Genel dosya açma
Sıkıştırma çerçevesi, Xamarin.iOS ve Xamarin.Mac'te bir akış API'sini kullanır. Bu API, verileri sıkıştırmak için geliştiricinin .NET içindeki diğer GÇ API'lerinde kullanılan normal desenleri kullanabileceği anlamına gelir. Aşağıdaki örnek, sıkıştırma çerçevesiyle verilerin sıkıştırmasını nasıl kaldıracaklarını gösterir. Bu, API'de bulunan API'ye System.IO.Compression.DeflateStream benzer:
// sample zlib data
static byte [] compressed_data = { 0xf3, 0x48, 0xcd, 0xc9, 0xc9, 0xe7, 0x02, 0x00 };
using (var backing = new MemoryStream (compressed_data)) // compress data to read
using (var decompressing = new CompressionStream (backing, CompressionMode.Decompress, CompressionAlgorithm.Zlib)) // create decompression stream with the correct algorithm
using (var reader = new StreamReader (decompressing))
{
// perform the required stream operations
Console.WriteLine (reader.ReadLine ());
}
CompressionStream diğer gibi arabirimini System.IO.Streamsde uygularIDisposable, bu nedenle geliştiriciler artık gerekli olmadığında kaynakların serbest kalmasını sağlamalıdır.
Genel dosya sıkıştırma
Sıkıştırma API'si, geliştiricilerin aynı API'yi izleyen verileri sıkıştırmasına da olanak tanır. Veriler, numaralandırıcıda CompressionAlgorithm belirtilen sağlanan algoritmalardan biri kullanılarak sıkıştırılabilir.
// sample method that copies the data from the source stream to the destination stream
static void CopyStream (Stream src, Stream dest)
{
byte[] array = new byte[1024];
int bytes_read;
bytes_read = src.Read (array, 0, 1024);
while (bytes_read != 0) {
dest.Write (array, 0, bytes_read);
bytes_read = src.Read (array, 0, 1024);
}
}
static void CompressExample ()
{
// create some sample data to compress
byte [] data = new byte[100000];
for (int i = 0; i < 100000; i++) {
data[i] = (byte) i;
}
using (var dataStream = new MemoryStream (data)) // stream that contains the data to compress
using (var backing = new MemoryStream ()) // stream in which the compress data will be written
using (var compressing = new CompressionStream (backing, CompressionMode.Compress, CompressionAlgorithm.Zlib, true))
{
// copy the data to the compressing stream
CopyStream (dataStream, compressing);
// at this point, the CompressionStream contains all the data from the dataStream but compressed
// using the zlib algorithm
}
Zaman uyumsuz destek
tarafından CompressionStream desteklenen System.IO.DeflateStreamtüm zaman uyumsuz işlemleri destekler. Bu, geliştiricilerin kullanıcı arabirimi iş parçacığını engellemeden sıkıştırma/sıkıştırmayı kaldırma işlemlerini gerçekleştirmek için zaman uyumsuz anahtar sözcüğünü kullanabileceği anlamına gelir.