25. november 2003 - 22:44Der er
15 kommentarer og 1 løsning
Læse binær fil
Jeg har et spørgsmål. Måske lidt dumt, men det gør det jo bare lidt nemmere at løse. Jeg har leget lidt med nogle eksempler jeg fandt på nettet, og det har selfølgelig givet lidt problemer
Jeg vil først høre om der er en mulighed for at læse filen uden "throws ioexception" i main
Jeg vil også gerne vide hvorfor x og y kun bliver skrevet ud ved den nederste system.out, og ikke den midt i while løkken?
Her er koden:
import java.io.*; public class ReadIO { public static void main(String[] args) throws IOException {
DataInputStream in = new DataInputStream(new FileInputStream("IOprimitives_0_5_0.DAT"));
int x = 0; int y = 0; int direction = 0; int r1; int r2; int r3; int g1; int g2; int g3; int b1; int b2; int b3; StringBuffer desc;
try { while (true) { x = in.readInt(); in.readChar(); y = in.readInt(); in.readChar(); direction = in.readInt(); char chr; desc = new StringBuffer(20); char lineSep = System.getProperty("line.separator").charAt(0); while ((chr = in.readChar()) != lineSep) desc.append(chr); System.out.println(x+ " " +y); } } catch (EOFException e) { } in.close(); System.out.println(x + " - "+y+ " - " + direction); } }
Hvis x og y ikke udskrives i den indre while løkke, så var en nærliggende hypotese jo at du enten fik en EOFEXception eller at readChar returnerede linie skift.
Nr 1. Skal jeg så lave en ny try og catch, eller kan jeg bare skrive catch(EOFExecption e, IOExecption e)?
Det kan ikke være en eof, for filen fylder omkring 1kb, og i den nederste system.out, skriver den, den første linje korrekt ud. Jeg har indsat linjeskift efter hver linje. Skulle den stadig ikke printe hver linje ud?
Har fjernet linjeskift nu, men den skriver stadig ikke noget ud der... Den skriver filen rigtigt, og den må også indeholde de rigtige data, siden jeg får den sidste system.out rigtig ud. Det er bare kun den første linje. Vil jo gerne have skrevet alle dele af filen ud.
Min tekstfil ser sådan ud(har du vist set før) 14 154 0.45 0.05 0.05 234 145 1.34 0.06 0.12 osv.
Og så skriver et kordinatsæt ud hver gang while løkken kører igennem. Ligesom hvis jeg i en tekstfil havde to linjer: 123 23 12 245 og så brugte readLine til at læse dem med?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.