SORU
10 Kasım 2008, PAZARTESİ


Yapılandırılmış ikili okumak için en iyi yolu, Java ile dosya

Ben ikili bir dosyayı okumak için Java ile eski bir biçimde.

Özetle dosya da tamsayı ve karakter içeren bir başlık birkaç tamsayılar, bayt ve sabit uzunlukta char dizileri içeren kayıtların listesini takip etti.

Başka bir dil isterim. structs (C/C ) veya records (Pascal/Delphi) olan bayt bayt beyan ve Başlığı kaydeder. O zaman başlığı bir değişken sizeof(header) bayt okuma ve kayıtlar için de aynısını yapardım.

Şöyle bir şey: (Delphi)

type
  THeader = record
    Version: Integer;
    Type: Byte;
    BeginOfData: Integer;
    ID: array[0..15] of Char;
  end;

...

procedure ReadData(S: TStream);
var
  Header: THeader;
begin
  S.ReadBuffer(Header, SizeOf(THeader));
  ...
end;

Java ile benzer bir şey yapmak için en iyi yolu nedir? Kendi başına her değeri okumak zorundayım yoksa başka yolu yok bu tür bir "blok-okumak"?

CEVAP
10 Kasım 2008, PAZARTESİ


Bildiğim kadarıyla, Java okudun engellemek için güçlü olmak yerine bayt bir dosya okumak için zorlar. Eğer Java nesneleri seri hale getirilirken olsaydı, farklı bir hikaye olurdu.

Diğer örnek gösterilen bir Dosya ile DataInputStream sınıfını kullanın, ama aynı zamanda bir kısayol kullanabilirsiniz: RandomAccessFile sınıf:

RandomAccessFile in = new RandomAccessFile("filename", "r");
int version = in.readInt();
byte type = in.readByte();
int beginOfData = in.readInt();
byte[] tempId;
in.read(tempId, 0, 16);
String id = new String(tempId);

Eğer bu daha kolay olurdu, eğer bir sınıfa tepki nesneleri çevirin, unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • Marissah Simonini

    Marissah Sim

    25 HAZİRAN 2013
  • The Platform

    The Platform

    14 HAZİRAN 2006