» »

[JAVA] kako dobiti določene chare

[JAVA] kako dobiti določene chare

c0dehunter ::

Imam naprimer .txt datoteko z usernami in še ostalimi podatki, ki jih ne rabim.
Iz tega bi rad dobil samo vse username, v novi datoteki, vsakega v svoji vrsti.
Vem tudi, da je pred vsakim usernamom dvojno dvopičje "::" in nikjer drugje. Vsako uporabnisko ime je dolgo 8 charov, se pravi da moram dobiti 8charov po vsakem "::".

Kako bi to izvedel?

Do sedaj sem naredil to:

import java.io.File;
import java.util.*;
public class md5{
public static void main(String [] args){
File db=new File("db.txt");


Hvala
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

PaX_MaN ::

Bereš line() po line() - metoda readLine() - z ,IIRC, BufferedReaderjem, potem pa daš:
int polozaj = prebranaVrstica.indexOf("::");
String podatkiKiJihHočem = prebranaVrstica.substring(polozaj+1,polozaj+9(mogoče 8? ne vem na pamet));
Potem pa samo shraniš vsak podatekKiGaHočem z BufferedWriterjem v nov fajl z writeLine().

Zgodovina sprememb…

  • spremenilo: PaX_MaN ()

c0dehunter ::


import java.io.File;
public class prog{
public static void main(String [] args){
File db = new File("db.txt");
File db_konec = new File("db_konec.txt");

branje = new BufferedReader(new FileReader(db));
pisanje = new BufferedWriter(new FileWriter(db_konec));
for(int i=0; i++; i < 50){
branje.readLine(i);
int polozaj = i.indexOf("::");
String podatki = i.substring(polozaj+1,polozaj+9);
pisanje.writeLine(i);
}
}
}


No, ole sem uspel narediti.
1. Kako bereš vsako novo vrstico? branje.readLine(i); po mojem ni pravilno :\
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

kopernik ::

String vrstica;
while((vrstica = branje.readLine()) != null) { ... }

c0dehunter ::

koernik, sem poskusil, ampak sedaj pa dobim nazaj banalno napako:
prog.java:9: not a statement
for(int i=0; i++; i < 50){



import java.io.File;
public class prog{
public static void main(String [] args){
File db = new File("db.txt");
File db_konec = new File("db_konec.txt");

branje = new BufferedReader(new FileReader(db));
pisanje = new BufferedWriter(new FileWriter(db_konec));
for(int i=0; i++; i < 50){
String vrstica;
while((vrstica = branje.readLine()) != null){
int polozaj = i.indexOf("::");
String podatki = vrstica.substring(polozaj+1,polozaj+9);
pisanje.writeLine();
}
}
}
}


Ne vem kaj je še narobe :\
Pomagam si z 5 stranmi in 1 slovensko izdajo .pdf na temo java.io.File + Slo-tech help on demand :D , pa še zmeri ne gre.
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

Zgodovina sprememb…

kopernik ::

Na hitro iz glave :-)

import java.io.*;
import java.util.*;

public static void main(String [] args) {
BufferedReader branje = new BufferedReader(new FileReader("db.txt"));
BufferedWriter pisanje = new BufferedWriter(new FileWriter("db_konec.txt"));
while((vrstica = branje.readLine()) != null) {
pisanje.write(vrstica);
pisanje.newLine();
}
branje.close();
pisanje.close();
}


Poskusi, če dela.

c0dehunter ::

Sem poskusil. Dodal sem se public class prog{ in String vrstica; , ki si ga pozabil :8)

Vse skupaj izgleda sedaj takole:

import java.io.*;
import java.util.*;
public class md5{
public static void main(String [] args) {
BufferedReader branje = new BufferedReader(new FileReader("db.txt"));
BufferedWriter pisanje = new BufferedWriter(new FileWriter("db_konec.txt"));
String vrstica;
while((vrstica = branje.readLine()) != null) {
pisanje.write(vrstica);
pisanje.newLine();
}
branje.close();
pisanje.close();
}
}


Napake, ki jih dobim:
Unreported exception java.io.IOException; must be caught or declared to be thrown
branje.close();

isto za
pisanje.write(vrstica);
pisanje.close();
in še približno 5
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

kopernik ::

Ja, sem pisal na hitro in pozabil definicijo razreda.

Sicer pa vrstico:
public static void main(String [] args) {

spremeni v :
public static void main(String [] args) throws IOException {

c0dehunter ::

Ok, sedaj dela, vendar ta verzija kopira samo eno datoteko v drugo. Da bi dobil podatke, ki jih hočem, sem dodal še nekaj zraven:


import java.io.*;
import java.util.*;
public class md5{
public static void main(String [] args) throws IOException {
BufferedReader branje = new BufferedReader(new FileReader("db.txt"));
BufferedWriter pisanje = new BufferedWriter(new FileWriter("db_konec.txt"));
String vrstica;
String podatki;
while((vrstica = branje.readLine()) != null) {
int polozaj = vrstica.indexOf("::");
podatki = vrstica.substring(polozaj+1,polozaj+8);
pisanje.write(podatki);
pisanje.newLine();
}
branje.close();
pisanje.close();
}
}


Sedaj pa pravi, da je "String index out of range: 8 at vrstica.substring(Unknown Source);"
Mislim da je to še zadnja napaka...
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

kopernik ::

Mogoče je kakšna vrstica prazna oz. ne vsebuje dveh podpičij.

int polozaj = vrstica.indexOf("::");
if(polozaj != -1)
{
//+2 in +10 zato, ker je string "::" dolg 2 znaka
podatki = vrstica.substring(polozaj+2,polozaj+10);
pisanje.write(podatki);
pisanje.newLine();
}

Kako ves, da je username dolg ravno 8 znakov ? Kaj pa ce je manj ?

Zgodovina sprememb…

  • spremenil: kopernik ()

c0dehunter ::

Username je dolg 8 mest, ker drugačnega ne moreš registrirati na moji strani (imam en poseben sistem).

Je pa res, da ni v vsaki vrstici dvojnega dvopičja(::), torej bi mogel še dodatno preverjati, če je v vrstici "::" in šele če je pogoj izpolnjen, izvesti kodo?
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

kopernik ::

Saj sem ti napisal kodo za preverjanje ...

c0dehunter ::

Aja, sem spregledal...

Hvala ti, dela kot mora :D
I do not agree with what you have to say,
but I'll defend to the death your right to say it.

molotov ::

btw
itak si že naredil z while zanko, ampak
for(int i=0;i++;i < 50) se verjetno tako napiše for(int i=0;i<50;i++) ;)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java]: replace - slovar v txt

Oddelek: Programiranje
121594 (1452) Spura
»

[java] uporaba baze .mdb z javo

Oddelek: Programiranje
51527 (1442) gtu
»

branje iz fajla v javi

Oddelek: Programiranje
51077 (1017) Lizard
»

[java] Runtime.exec()

Oddelek: Programiranje
111812 (1685) borchi
»

Java problemček

Oddelek: Programiranje
141359 (1152) Imortales

Več podobnih tem