Pure Javascript Unicode desteği vardır, ama binary veri için yoktur. TCP streams (akışlar) veya dosya sistemi ile octet akışları yönetmek gerekir. Node.js bir dizi şeklinde tutan bir Buffer sınıfı sağlar. Buffer sınıfı, ek bir modül yazmadan bir uygulamadan erişmek için genel bir sınıftır. Yani Global bir değişken olarak düşüebiliriz.
Buffer Yaratma
Buffer sınıfı yapıcısı birçok overload durumdadır. Başla bir deyişle farklı yollardan oluşturulabilir.
1 2 3 4 5 6 |
//10 octetlik buffer olusturma var buf = new Buffer(10); //Verilen dizi icin buffer olusturma var buf = new Buffer([10, 20, 30, 40, 50]); //Verilen bir metin ve belirli bir encoding formatinda buffer olusturma var buf = new Buffer("Ornek metin buffer", "utf-8"); |
Buffer’a Yazma
1 |
buf.write(string[, offset][, length][, encoding]) |
Parametreler:
- string − Buffer’a yazılacak metin verisi.
- offset − Yazılacak Buffer’ın indeksi. Geçerli değeri 0’dır.
- length − Yazılacak byte miktarıdır. Geçerli değeri buffer.length, yani buffer uzunluğudur.
- encoding − Kullanılan encoding. Geçerli değer “utf8″dir.
Döndürülen Değer: Bu metod yazılan octet sayısını döndürğr. Tüm metin için uygun Buffer’da yeterli yer yok ise metnin bir kısmı yazılacaktır.
1 2 3 4 |
buf = new Buffer(256); len = buf.write("Merhaba"); console.log("Yazilan Octet : "+ len); |
Sonuç olarak console ekranına “Yazilan octet : 7” yazar.
Buffer Okuma
1 |
buf.toString([encoding][, start][, end]) |
Parametreler:
- encoding
- start − okuma işlemine başlanacak index. Geçerli değeri 0’dır.
- end − okumanın biteceği son index. Geçerli değeri Buffer’ın son noktasıdır.
Döndürülen Değer: Bu yöntem, belirtilen karakter kümesi kodlamasını kullanarak kodlanmış arabellek verilerinden bir dizeyi çözer ve döndürür.
1 2 3 4 5 6 7 8 9 |
buf = new Buffer(26); for (var i = 0 ; i < 26 ; i++) { buf[i] = i + 97; } console.log( buf.toString('ascii')); // cikti: abcdefghijklmnopqrstuvwxyz console.log( buf.toString('ascii',0,5)); // cikti: abcde console.log( buf.toString('utf8',0,5)); // cikti: abcde console.log( buf.toString(undefined,0,5)); // cikti: abcde (gecerli encoding) |
Buffer’ı JSON Çevirme
1 |
buf.toJSON() |
Buffer verilerini JSON formatına çevirir.
1 2 3 4 |
var buf = new Buffer('Merhaba'); var json = buf.toJSON(buf); console.log(json); |
Sonuç olarak [77,101,114,104,97,98,97] şeklinde bir JSON verisi döndürülür.
Diğer İşlemler
Buffer üzerine birşeltirme(Buffer.concat), karşılaştırma (buf.compare), kopyalama (buf.copy), kesme (buf.slice) ve buffer uzunluğunu bulma (buf.length) gibi ek metodlar vardır.