Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Appletista tallennus

Mobel [08.06.2007 13:25:04]

#

Appletissani on seuraavanlainen pätkä koodia:

try {
     dataUlos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(tiedostoNimi), 128));
     dataUlos.writeChars("Teksti tallentuu näin: T e k s t i");
     dataUlos.flush();
     status.setText("Tallennus onnistui!");
     }

catch (SecurityException e) {
     status.setText("Security exception" + e);
     }

catch (IOException ioe) {
     status.setText("I/O exception");
}

Teksti tallentuu ikävästi välilyöntien kanssa. Esim.:" T e k s t i". Toisen ohjelman tulisi pystyä lukemaan tuota ja kun esimerkiksi tallennetaan luku 10, siitä tuleekin 1 ja 0. Kaiken muun sain toimimaan kuten halusin, mutta tämä ongelma häirtsee.

Ja koska kopioin koodin melko suoraan netistä ihmettelen myös, mitä virkaa seuraavassa on numerolla 128:

dataUlos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(tiedostoNimi), 128));

Onkohan mahdollista saada nuo välilyönnit merkkien välistä pois?

Blaze [08.06.2007 13:44:55]

#

Mobel kirjoitti:

Onkohan mahdollista saada nuo välilyönnit merkkien välistä pois?

Käytä writeUTF() eikä writeChars()-metodia.

Mobel [08.06.2007 14:57:59]

#

Nyt tiedostosta löytyy tällaista:

ࠇ″″″″″″...

Tuo ilmeisesti käyttää Javan omaa UTF koodausta. Jos tallennan tiedostot UTF-8 muotoon ohjelmani ei enää osaakaan lukea sitä.

Mobel [12.06.2007 16:18:54]

#

Eikun toimiipas tuo sittenkin. Kiitokset Blazelle vastauksesta! Jostain syystä kun koitin kirjoittaa tiedostoon esim.

3 3 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 2 2 2 1 1 1 2 2 2 2 1 1 1...

edellisen viestin kaltainen tulostus tapahtui. Tosin merkit muuttuivat, kun pastesin ne tänne.

Notepäd ilmeisesti luulee, että haluan kirjoittaa jotain ANSI-merkistön merkkejä numerokooden. En kylläkään ole varma selityksestä, mutta joka tapauksessa normaali teksti tallentuu oikein. Ratkaisin ongleman lisäämällä etutunnisteen.

dataUlos.writeUTF("Kartta näyttää tältä:"+tekstiMuotoon(taulu));

Vielä lisäkysymys:
Näyttää siltä, että tiedoston koodauksen voi muuttaa kirjoittamalla tiedoston alkuun tunnisteen(vaikkapa XP-koneissa kirjoittamalla muistioon "this app can break" ja tallentamalla). Mikä tunniste tulisi eteen laittaa, että saisin tiedoston tallennettua ANSI-koodauksella?

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta