Avatar billede zamiel Nybegynder
23. januar 2008 - 10:33 Der er 5 kommentarer og
1 løsning

Problem med DataOutputStream til skrivning af XML fil

Jeg bruger DataOutputStream til at skrive en string til en fil i UTF format. Stringen indeholer XML, det underlige er at når den har skrevet filen er der tilføjet to tegn til filen FØR den tekst som der var i den string som blev skrevet.

resultatet er altså som følgende:

&#65533;<?xml version="1.0"?><OrderFile><FileInfo> etc..


Mit spørgsmål er så.. hvorfor kommer de to tegn med i starten af file inden XML headeren. Og hvordan fjerner jeg det?


Koden der skriver til filen ser således ud..


File file = new File(this.getRequest().getSession().getServletContext().getRealPath("/admin/order")+"\\OrderOtribaby"+date+".xml");
            DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
            out.writeUTF(orders);
            out.flush();           
            out.close();
Avatar billede lborupj Nybegynder
23. januar 2008 - 13:37 #1
Hej,

Prøv at læse JavaDoc til writeUTF: http://java.sun.com/j2se/1.4.2/docs/api/java/io/DataOutputStream.html#writeUTF(java.lang.String)

som du kan se skrives først (2 bytes) længden på den streng, du får skrevet (altså i bytes og derved ikke længden på den streng du giver til writeUTF). Hvis du "bare" vil skrive en streng i bestemt format så en OutputStreamWriter måske bedre.

Mvh / Lars Borup Jensen
<a href="http://www.it-arbejde.dk">it arbejde</a>
Avatar billede zamiel Nybegynder
23. januar 2008 - 15:49 #2
ja det kan jeg godt se.. har også prøvet med en Streamwriter før med det resultat at filen ikke var UTF-8 kompatibelt. Hvilket det skal være i dette tilfælde..
Avatar billede zamiel Nybegynder
23. januar 2008 - 15:55 #3
jeg har fundet en løsning på problemet :)

@lborupj

du kom med forklaringen så skal du også have pointene
Avatar billede lborupj Nybegynder
23. januar 2008 - 16:02 #4
here ya go! :-)
Avatar billede arne_v Ekspert
24. januar 2008 - 02:45 #5
DataOutputStream bruges kun til binære data.

OutputStreamWriter constructor har et andet argument hvor du kan angive tegn sæt.

Og med en PrintWriter udenom er det rigtigt nemt.
Avatar billede zamiel Nybegynder
24. januar 2008 - 12:55 #6
@arne_v

ja det fandt jeg ud af :) bruger outputstreamwriteren nu..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester