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

  • HowcastSportsFitness

    HowcastSport

    11 Mayıs 2011
  • lissaandbeauty

    lissaandbeau

    24 Aralık 2011
  • metallmanutza13

    metallmanutz

    13 NİSAN 2007