[]
Java - Dosyadan Okuma
Java konusunda biraz beceriksizim, hatta o kadar beceriksizim ki, herkesin küfrettiği Eclipse - Ganymede'i hiç bir sıkıntı duymadan kullanıyorum. (Sıkıntı olmaması Eclipse'in başarısı değil, benim dangoz olup sıkıntı olup olmadığını anlayamamamdan kaynaklanıyor muhtemelen.)
Sorunum şu ki, ben bi şeyleri dosyadan okuyayım istiyorum ancak nasıl "#" karakterine kadar okutup sonra durup bir sonraki # sembolüne kadar okuyacağını bulamadım, readLine komutuyla satır satır okuyabiliyorum, o konuda sorun yok ancak ben satır satır okumak istemiyorum dediğim gibi, # sembolüyle ayrılmış stringler var, onları ayrı ayrı okumak istiyorum.
Ali#Güçlü#42#İzmir#Türkiye#Bakkal
Fatma#Sağlam#19#İstanbul#Türkiye#Öğrenci
John#Green#26#Florida#ABD#Kurye
tarzı bir notepad dosyası var elimde ve şöyle bir şey yazdım (readLine kullanarak);
public class Main {
public static void main(String[] args){
BufferedReader oku;
BufferedWriter yaz;
File dosya=new File("d:\\emlaklar.txt");
String s="";
try{
oku=new BufferedReader(new FileReader(dosya));
while(oku.ready()){
s+= oku.readLine() + "\r\n" ;
System.out.printf(s);
} oku.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
şunu evirip çevirip tek tek okumamı sağlayacak olanlara, Allah, Windows 7'nin kaynak kodlarını bahşetsin.
Edit: Ha bi de orda, yaş sayı olarak girilmiş ancak string'e atıyorum, bu bi sorun oluşturur mu mesela yaşa göre sıralamak istediğimde?
Sorunum şu ki, ben bi şeyleri dosyadan okuyayım istiyorum ancak nasıl "#" karakterine kadar okutup sonra durup bir sonraki # sembolüne kadar okuyacağını bulamadım, readLine komutuyla satır satır okuyabiliyorum, o konuda sorun yok ancak ben satır satır okumak istemiyorum dediğim gibi, # sembolüyle ayrılmış stringler var, onları ayrı ayrı okumak istiyorum.
Ali#Güçlü#42#İzmir#Türkiye#Bakkal
Fatma#Sağlam#19#İstanbul#Türkiye#Öğrenci
John#Green#26#Florida#ABD#Kurye
tarzı bir notepad dosyası var elimde ve şöyle bir şey yazdım (readLine kullanarak);
public class Main {
public static void main(String[] args){
BufferedReader oku;
BufferedWriter yaz;
File dosya=new File("d:\\emlaklar.txt");
String s="";
try{
oku=new BufferedReader(new FileReader(dosya));
while(oku.ready()){
s+= oku.readLine() + "\r\n" ;
System.out.printf(s);
} oku.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
şunu evirip çevirip tek tek okumamı sağlayacak olanlara, Allah, Windows 7'nin kaynak kodlarını bahşetsin.
Edit: Ha bi de orda, yaş sayı olarak girilmiş ancak string'e atıyorum, bu bi sorun oluşturur mu mesela yaşa göre sıralamak istediğimde?
eğer bulursam geçen yıldan kalma kodlarım var aynıları, işine yarar (şimdi düşünüp sana program yazacak durumda değilim de arşi, bağışla). ama onun dışında guiden anlayan varsa da bana yardım edebilir, paint yapmam isteniyor. lanet, lanet, lanet.
- damlanin (16.12.10 20:28:36)
Üzerinde bulunduğun satırın tüm karakterlerini bir arraye at. {A,l,i,#,G.....} gibi.
Ardından isEqual ile tek tek karakterleri kontrol et. # bulduğunda, arrayin oraya kadar olan karakterlerini yeni bir string e ata. Bir de önceki # in nerde olduğunu tutmak için bir integer kullan.
yani;
array'in üstünden geçersin, # bulursa, öncekileri bir string e yazdırırsın. Ve bulduğun # sembolünün arrayin kaçıncı elemanı olduğunu bir integerda tutarsın. Döngü devam eder ve sonraki # işaretine gelirsin. Bu sefer önceki # işaretinin bulunduğu yerden üstünde bulunduğuna kadar olan karakterleri bir string e atarsın.
Anlatamadım ama bu yöntem işe yarar :D
Ardından isEqual ile tek tek karakterleri kontrol et. # bulduğunda, arrayin oraya kadar olan karakterlerini yeni bir string e ata. Bir de önceki # in nerde olduğunu tutmak için bir integer kullan.
yani;
array'in üstünden geçersin, # bulursa, öncekileri bir string e yazdırırsın. Ve bulduğun # sembolünün arrayin kaçıncı elemanı olduğunu bir integerda tutarsın. Döngü devam eder ve sonraki # işaretine gelirsin. Bu sefer önceki # işaretinin bulunduğu yerden üstünde bulunduğuna kadar olan karakterleri bir string e atarsın.
Anlatamadım ama bu yöntem işe yarar :D
- fatalstorm (16.12.10 20:56:14)
Müjde!, String için seperate metodu varmış!
s+= oku.readLine() + "\r\n" ;
Array satir1 = s.split("#");
Edit: Yazarken programlama dilleri birbirine karışmış.
String[] satir1 = s.split("\\#");
s+= oku.readLine() + "\r\n" ;
Array satir1 = s.split("#");
Edit: Yazarken programlama dilleri birbirine karışmış.
String[] satir1 = s.split("\\#");
- fatalstorm (16.12.10 21:03:34 ~ 22:29:34)
Yok olmadı beceremedim, sağını solunu kurcaladım ama baya?
- 3 atli 7 katli (16.12.10 21:39:57)
her bir satırı okuduktan sonra okudugn her satır icin
Stringtokenizer st = new stringtokenizer(line, "#");
diyip
while(st.hasmoretokens())
system.out.println(st.nexttoken());
seklinde ekrana yazdırabilirsin.
Stringtokenizer st = new stringtokenizer(line, "#");
diyip
while(st.hasmoretokens())
system.out.println(st.nexttoken());
seklinde ekrana yazdırabilirsin.
- java (16.12.10 22:04:00)
String [] satir1 = s.split("#");
for(String satir : satir1)
System.out.print(satir);
yazmasam olmazdı.
for(String satir : satir1)
System.out.print(satir);
yazmasam olmazdı.
- damlanin (16.12.10 22:09:14)
1