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

  • Booredatwork.com

    Booredatwork

    5 Ocak 2009
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • jagadambarecords

    jagadambarec

    13 AĞUSTOS 2008