[]

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?

 
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
  • 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("\\#");
  • 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.
  • java  (16.12.10 22:04:00) 
String [] satir1 = s.split("#");
for(String satir : satir1)
System.out.print(satir);

yazmasam olmazdı.
  • damlanin  (16.12.10 22:09:14) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.