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?
Mobel kirjoitti:
Onkohan mahdollista saada nuo välilyönnit merkkien välistä pois?
Käytä writeUTF() eikä writeChars()-metodia.
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ä.
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?
Aihe on jo aika vanha, joten et voi enää vastata siihen.