Avatar billede cborg Nybegynder
03. november 2003 - 05:06 Der er 9 kommentarer og
1 løsning

problemer med escape character

Jeg har lidt problemer vedr simple tekstfil IO. Jeg skal læse og skrive til en ini-fil, som et andet program så læser fra senere. Et uddrag er fx:

[graphics options]
NoBlend=false
ScreenWidth=800
ScreenHeight=600
ShadowMode=2
MipBias=0
LoadRadius=1
Compositing=3

Jeg læser filen ved at smække en linje af gangen ned i en vector, sende det videre til en String array, foretage det nødvendige korrektioner og derefter lægge det hele i en string og overskrive filen.

Mit problem er at jeg bruger escape characteren '\n' til at definere en ny linje. Dette opfanger det anden program imidlertidigt som et ascii tegn (vist som en firkant). Således af den nye fil blot står på en linje...

Hvordan kan det løses?
Avatar billede bearhugx Nybegynder
03. november 2003 - 05:09 #1
Brug writeLine i stedet for write, så vil Java sørge for at indsætte de rette escape-karaterer for NEWLINE for det specifikke OS automatisk...
Avatar billede bearhugx Nybegynder
03. november 2003 - 05:10 #2
hvis det ikke virker (burde det) så afprøv kombinationen \r\n
Avatar billede cborg Nybegynder
03. november 2003 - 05:28 #3
Tak for hjælpen. Jeg ved fra de gamle dos dage at /r er det samme som en Carriage Return, men hvordan kan det være at kombinationen \r\n virker? (det var den løsning jeg valgte)
Avatar billede cborg Nybegynder
03. november 2003 - 05:35 #4
CR rykker jo pointeren hen til begyndelsen af den active linje 'ikk? Så skulle man umiddelbart tro at en \n vill etrykke den pågældende linje et hak ned... Men åbenbart ikke :)
Avatar billede bearhugx Nybegynder
03. november 2003 - 05:35 #5
Så vidt jeg husker :
\r = carriage Return --> fører markøren hen på første tegn i linen
\n = new line --> går ned på næste linie
Avatar billede bearhugx Nybegynder
03. november 2003 - 05:39 #6
takker for points.. Jeg kan ikke give dig en dybere forklaring nu - det er jeg simpelthen for træt til (og jeg har stadig lidt, som skal laves inden jeg møder på arbejde her kl. 9 :-/ )...

Men igen - tak for points :-)
Avatar billede arne_v Ekspert
03. november 2003 - 05:42 #7
på Unix er linier adskilt af \n
på DOS/Windows er linier adskilt af \r\n
på Mac er linier adsklit af \r

write skriver binært d.v.s. kun det du angiver

print & println skriver text d.v.s. at den oversætter det du skriver
og \n bliver fysisk skrevet som \r\n.
Avatar billede bearhugx Nybegynder
03. november 2003 - 05:43 #8
Tak for forklaringen, Arne :-)
Avatar billede cborg Nybegynder
03. november 2003 - 05:46 #9
også herfra :)
Avatar billede arne_v Ekspert
03. november 2003 - 05:59 #10
Der er iøvrigt en:

System.getProperty("line.separator")

som kan hente den specifikke linie adskillelse så man kan skrive platform
uafhængig kode.
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