14. februar 2004 - 22:30Der er
9 kommentarer og 1 løsning
Fil håndtering
Mit problem.
Jeg modtager en fil fra en applikation som er på en anden computer. Mit problem er at protokollen der bliver benyttet er udp. Jeg modtager filen i byte arrays (byte[]). Jeg kan nemt skrive et array til en fil. Men jeg vil gerne vide hvornår jeg har modtaget hele filen, og og så skrive hele filen til en fil. Håber i forstår.
Min kode:
while (true){ s.receive(packet); buffer =packet.getData(); ......... skriv til fil, og hvis eof, luk fil. ......... }
Nej, det er bare en mindre skole opgave. Vi skal ikke tage højde for at udp er upålidelig.
Jeg prøver lige at implementere som du foreslog det. Jeg havde bare håbet at der ville være et end of file tegn i byte arrayet. (Java fil håndtering er ikke min stærke side.)
public class BinFile { private static void store(DataOutputStream dos, int iv, double xv, String sv) throws IOException { dos.writeInt(iv); dos.writeDouble(xv); dos.writeByte(sv.length()); dos.write(sv.getBytes()); } private static void load(DataInputStream dis) throws IOException { int iv = dis.readInt(); double xv = dis.readDouble(); int len = dis.readUnsignedByte(); byte[] b = new byte[len]; dis.read(b); String sv = new String(b); System.out.println(iv + " " + xv + " " + sv); } public static void main(String[] args) throws IOException { DataOutputStream dos = new DataOutputStream(new FileOutputStream("C:\\test.bin")); store(dos, 123, 123.456, "ABC"); store(dos, -1, -2.5, "123"); dos.close(); DataInputStream dis = new DataInputStream(new FileInputStream("C:\\test.bin")); while(dis.available() > 0) { load(dis); } dis.close(); } }
Synes godt om
Ny brugerNybegynder
Din løsning...
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.