praegune kellaaeg 20.06.2025 01:18:28
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
brixxx
Lõuapoolik


liitunud: 04.01.2012
|
04.12.2013 05:19:40
Java konverter |
|
|
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 |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
04.12.2013 10:46:21
|
|
|
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:
|
package filetest.ee; import java.io.*; class ReadCSVFile { Scanner sc = new Scanner (new File("input.csv")); sc.useDelimiter(";"); // line breaks while (sc.hasNext()) { line = sc.next(); } sc.close(); } }
|
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 |
|
 |
|
lisa lemmikuks |
|
|
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.
|