Lendo um arquivo Byte a Byte

Fala galera tudo certo?

Gostaria de saber como faço para ler um arquivo txt byte a byte?

Pois eu estou querendo ler uma estrutura de um aquivo e no layout está informando para eu ler esse arquivo byte a byte. mais num consegui descobrir como ler byte a byte no Java…

por exemplo o layout está me apresentando algo assim:

[code]–| SFF file structure
|--------------------------------------------------*
Version 1.01
HEADER (512 bytes)

Bytes
00-11 "ElecbyteSpr[code]–| SFF file structure
|--------------------------------------------------*
Version 1.01
HEADER (512 bytes)

Bytes
00-11 “ElecbyteSpr\0” signature [12]
12-15 1 verhi, 1 verlo, 1 verlo2, 1 verlo3 [04]
16-19 Number of groups [04]
20-24 Number of images [04]
24-27 File offset where first subfile is located [04]
28-31 Size of subheader in bytes [04]
32 Palette type (1=SPRPALTYPE_SHARED or 0=SPRPALTYPE_INDIV) [01]
33-35 Blank; set to zero [03]
36-511 Blank; can be used for comments [476]

SUBFILEHEADER (32 bytes)

Bytes
00-03 File offset where next subfile in the “linked list” is [04]
located. Null if last subfile

04-07 Subfile length (not including header) [04]
Length is 0 if it is a linked sprite
08-09 Image axis X coordinate [02]
10-11 Image axis Y coordinate [02]
12-13 Group number [02]
14-15 Image number (in the group) [02]
16-17 Index of previous copy of sprite (linked sprites only) [02]
This is the actual
18 True if palette is same as previous image [01]
19-31 Blank; can be used for comments [13]
32- PCX graphic data. If palette data is available, it is the last
768 bytes.
--------------------------------------------------------------------------[/code]" signature [12]
12-15 1 verhi, 1 verlo, 1 verlo2, 1 verlo3 [04]
16-19 Number of groups [04]
20-24 Number of images [04]
24-27 File offset where first subfile is located [04]
28-31 Size of subheader in bytes [04]
32 Palette type (1=SPRPALTYPE_SHARED or 0=SPRPALTYPE_INDIV) [01]
33-35 Blank; set to zero [03]
36-511 Blank; can be used for comments [476]

SUBFILEHEADER (32 bytes)

Bytes
00-03 File offset where next subfile in the “linked list” is [04]
located. Null if last subfile

04-07 Subfile length (not including header) [04]
Length is 0 if it is a linked sprite
08-09 Image axis X coordinate [02]
10-11 Image axis Y coordinate [02]
12-13 Group number [02]
14-15 Image number (in the group) [02]
16-17 Index of previous copy of sprite (linked sprites only) [02]
This is the actual
18 True if palette is same as previous image [01]
19-31 Blank; can be used for comments [13]
32- PCX graphic data. If palette data is available, it is the last
768 bytes.
--------------------------------------------------------------------------[/code]

O arquivo a ser lido está em anexo. ao post.

Será que alguem pode me dar uma luz de como ler byte a byte… nem precisa montar o script para ler isso ae pq eu quero montar sozinho se não num aprendo java =D

A e tbm o comando para mover o ponteiro para o byte tal… valeu…

Eu estou lendo o arquivo assim:

File arquivo = new File(‘kfm.sff’);
stream = new FileInputStream(arquivo);
buffStream = new BufferedInputStream(stream);
data = new DataInputStream(buffStream);

Não sei se o data.readByte() lé byte a byte

Mais eu preciso que ele leia uma sequencia de byte exemplo preciso retorna 12 bytes para poder recuperar o nome da assinatura e assim vai indo… como eu faria isso? se eu fazer isso ele imprime :stuck_out_tongue: mais num é legal claro

data.readByte() // 1 byte
data.readByte() // 2 byte
data.readByte() // 3 byte
data.readByte() // 4 byte
data.readByte() // 5 byte
data.readByte() // 6 byte
data.readByte() // 7 byte
data.readByte() // 8 byte
data.readByte() // 9 byte
data.readByte() // 10 byte
data.readByte() // 11 byte
data.readByte() // 12 byte

se fose em Python eu faria algo assim:

data.read(12); ai ele já me retornaria os 12 primeiros bytes :wink:

valeu desde já :wink:

Olá!

Tente um for

for(int i = 0; i < 12; i++) {
    data.readByte();
}

Abraços

Eu sei.,… mais o negocio é totamente erro user for… eu dei um exemplo obscuro de 1º grau… tou ligado que dá para fazer em for… mais o problema num é esse eu quero retorna já da maneira como eu fazia no Python eu sei que deve ter alguma forma de retorna os bytes que quero informando…

A só para lembra num sou leigo em Programação só em Java que comecei a estudar a alguns meses sou programador a mais de 5 anos… programo com PHP e atuo na área a 4 anos :wink:

Muitos dos comandos do Java são parecidos com o PHP :wink: