2016-03-22 14 views
0

read() ve read(char[] ch) yöntemlerini kullanarak FileReader nesnesindeki bir dosyadaki tüm karakterleri okuyorum. Ama her iki yöntemi de kullanmaya çalıştığımda, çıktıyı yalnızca bir tane alırım. while parçası gibi çalışmıyor nedenFileReader yöntemleri read() ve oku (char []) in JAVA

class FR 
{ 
    void filereader() throws Exception 
    { 
     File f = new File("abc.txt"); 
     FileReader fr = new FileReader(f); 
     char[] ch = new char[(int)f.length()]; 
     fr.read(ch); 
     for (char ch1 : ch) 
     { 
      System.out.print(ch1); 
     } 
     System.out.println("\n*********************************"); 
     int i = fr.read(); 
     while(i != -1) 
     { 
      System.out.print((char)i); 
      i = fr.read(); 
     } 
     fr.close(); 
    } 
} 

birileri lütfen açıklayabilir: Burada

benim kod parçacığı nedir?

+0

'abc.txt' içeriği nedir? – Idos

+0

Sadece Benim adım, Kolejim, Kursum hepsi ayrı satırlarda. – Karthi13

+2

Not: 'f.length()', karakter sayısı bayt cinsinden değil. Çoklu bayt karakterleriniz varsa, karakterlerin gerçek uzunluğu daha az olacaktır. –

cevap

3

sen gerçekleştirdiğinizde: Etkili dosyanın tamamınıokuduğunuz

char[] ch = new char[(int)f.length()]; 
fr.read(ch); 

. dosyanın sonuna beri Bundan sonra
read her çağrı -1 döndürür:

karakter sayısı okumak veya -1 akışının sonuna ulaşıldığında ise İade

Giriş/çıkış here ile kullanım örneğini görebilirsiniz.

Dosya kelimelerini veya hat satırlarını okumak isterseniz, Scanner numaralı telefondan bakabilirsiniz.

1

Dosyanız fr.read(ch) aramanızla ilgili tüm dosyaları okuyor.
fr.read() numaralı telefonu arayarak, EOF algılandı ve herhangi bir karakter döndürmeyecek.

Kodunuzun okuma bölümlerinin sırasını değiştirirken farklı davranışlar göreceksiniz.

Ayrıca, fr.read(ch) aramanız tarafından okunan karakter sayısını da kontrol etmelisiniz. Bunun üzerine bir ipucu vermeliydi.

+0

Grt !!! Bu çok yardımcı oldu. Bu yüzden 'while' bloğu yürütmek için yeni bir 'FileReader 'nesnesi eklemem gerekiyor ..... – Karthi13