Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Java konverter märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
brixxx
Lõuapoolik
Lõuapoolik
brixxx

liitunud: 04.01.2012




sõnum 04.12.2013 05:19:40 Java konverter vasta tsitaadiga

Teen Java konvertit, kus tuleb tegeleda reader ja writer failidega. Hetkel on readeri fail "input.csv". Hetkel töötab faili lugemine, olen hetkel tükk aega uurinud, kuidas saab teha rea vahetust, kui määran rea vahetuse märgiks ";". Hetkel olen teada saanud, et saab teha Stringi või Scanner.classi meetodiga. Kood on hetkel String metoodit kasutanud, aga hetkel jätab rea samaks, ainult lisab esimeseks reaks ";" ning siis ülejäänud faili sisu muutmata. Kas oleks võimalik seda koodi juppi veidi korrigeerida, et töötaks, ilma et täiesti uuesti teha.

Fail - "input.csv":
0x12B, 0x18 11; 24 0xB, 299;

Kood:
package filetest.ee;

import java.io.*;

class ReadCSVFile {
public static void main(String args[]) throws Exception {
FileReader fr = new FileReader("input.csv");
BufferedReader br = new BufferedReader(fr);
// line breaks
String line = ";";
while (line != null) {
   System.out.println(line + "\n");
   line = br.readLine();
   if (line == null) {
      break;
   }
}
fr.close();
}
}
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 04.12.2013 10:46:21 vasta tsitaadiga

Viga on sul hetkel selles, et kasutad BufferedReader.readLine() meetodit. Kui su sisendfail on selline, nagu sa siin näitasid, ehk üks rida andmeid, kus on semikoolonid vahel, siis loeb readLine() meetod terve su faili korraga sisse. readLine() loeb pointeri hetkeasukohast kuni järgmise sisendis esineva reavahetuseni.

Scanneri kasutamine on üks võimalusi.
java:
  1. package filetest.ee;
  2.  
  3. import java.io.*;
  4.  
  5. class ReadCSVFile {
  6. public static void main(String args[]) throws Exception {
  7. Scanner sc = new Scanner(new File("input.csv"));
  8. sc.useDelimiter(";");
  9. // line breaks
  10. String line = null;
  11. while (sc.hasNext()) {
  12.    line = sc.next();
  13.    System.out.println(line);
  14.  
  15. }
  16. sc.close();
  17. }
  18. }


NB! Kirjutasin koodi otse foorumiaknasse, pole kompileerinud, seega ei ole kindel, kas peast kõik õigesti sai.. aga idee peaks vast arusaadav olema.

Lisaks veel mõned tähelepanekud:
1) Java package name andmisel kasutatakse tagurpidi domeeninimesid, st sinu "filetest.ee" asemel peaks olema "ee.filetest" või veel parem "ee.brixx.filetest" vms, et tagada unikaalsust.
2) println() käsule pole vaja enam ise "\n" juurde panna, println on print line ehk paneb niikuinii reavahetuse lõppu.
3) import java.io.*; ei ole ka hea kasutada, parem importida iga klass eraldi. Normaalset IDE-t kasutades pole see mingi probleem, IDE hoolitseb selle eest.

_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Java konverter
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.