2013-04-19 13 views
9

dizisine depolayın, artık içeriğin metin dosyasındaki diziye depolanmasıyla ilgili bir sorunla karşılaşıyorum. olması mümkündür,Metin dosyası içerik satırını diziye sırayla

abc1 
xyz2 
rxy3 

Ben çizgi ile dizi hattına bunları saklamak istiyorsunuz: durum metin dosyası içeriği gibidir? Ne bekliyoruz şu şekildedir:

arr[0] = abc1 
arr[1] = xyz2 
arr[2] = rxy3 

Böyle bir şey denemek ettik, ama benim için çalışmıyor gibi görünebilir. Bana yardım edebilecek biri varsa, gerçekten çok teşekkürler.

kodudur:

BufferedReader in = new BufferedReader(new FileReader("path/of/text")); 
     String str; 

     while((str = in.readLine()) != null){ 
      String[] arr = str.split(" "); 
      for(int i=0 ; i<str.length() ; i++){ 
       arr[i] = in.readLine(); 
      } 
     } 
+1

* üzerinde kontrol edebilirsiniz "ama benim için çalışmıyor gibi görünebilir" sonuçlandı hangi hata veya istisna *? Foruma kopyalayın/bir soruya [düzenle] (http://stackoverflow.com/posts/16100175/edit) olarak yapıştırın. –

+0

Her dizi öğesinde tüm çizgiyi istiyorsanız, neden ayırıyorsunuz? – NilsH

+0

Bölünmüş ("") bir sonraki satırı ayırt etmeme yardımcı olabileceğini düşündüm? böylece 1,2,3 lien olabilir .. – salemkhoo

cevap

18

Bir dizi bilmiyor olabilir, ön tanımlı bir boyut gerektirir oysa, dinamik boyutlandırma işleyen bir ArrayList kullanarak öneriyoruz. Listeyi her zaman bir diziye dönüştürebilirsiniz. numarasına göre

int i = 0; 
while((str = in.readLine()) != null){ 
    arr[i] = str; 
    i++; 
} 

Ama arr düzgün ilan edilmesi gerektiğini not: -

String[] arr = new String[3];// if size is fixed otherwise use ArrayList. 
int i=0; 
while((str = in.readLine()) != null)   
    arr[i++] = str; 

System.out.println(Arrays.toString(arr)); 
+0

Yardımlarınız için teşekkürler, Kevin, bana çok yardımcı oluyorsunuz, teşekkürler! – salemkhoo

+0

merhaba Kevin, cevabınız için teşekkürler, stringArr dizisini basmayı denediğimde şüphe duyuyorum. [Ljava.lang.String; @ 17bd8e. Kimse stringArr içeriğini yazdırmanın doğru yolunun ne olduğunu önerebilir. – Chinmoy

1

bu deneyin Dosyanızdaki girişler.

Öneri: - Kullanım takdirde boş while blok yürütmek değilse bir List yerine size değişken str içine bir satır okumak str = in.readLine()) != null yaptığınızda

2

Davandan için böyle bir şey yapmak gerekir:

BufferedReader in = new BufferedReader(new FileReader("path/of/text")); 
String str; 

List<String> list = new ArrayList<String>(); 
while((str = in.readLine()) != null){ 
    list.add(str); 
} 

String[] stringArr = list.toArray(new String[0]); 
1

(bunun için @Kevin Bowersox yazı bak) ve. Satırı arr[i] = in.readLine();'da bir kez daha okumana gerek yok. Ayrıca, giriş dosyasının tam boyutunu bilmiyorsanız (dizi sayısı) diziler yerine listeler kullanın.

BufferedReader in = new BufferedReader(new FileReader("path/of/text")); 
String str; 

List<String> output = new LinkedList<String>(); 

while((str = in.readLine()) != null){ 
    output.add(str); 
} 

String[] arr = output.toArray(new String[output.size()]); 
+1

Bilgileriniz için teşekkürler, Secator! – salemkhoo

3

Eğer dosyada olacak kaç satır bilmiyorum ve ayrıca daha sonra değişebileceği List kullandığı için bu çalışması gerekir.

BufferedReader in = new BufferedReader(new FileReader("path/of/text")); 
String str=null; 
ArrayList<String> lines = new ArrayList<String>(); 
while((str = in.readLine()) != null){ 
    lines.add(str); 
} 
String[] linesArray = lines.toArray(new String[lines.size()]); 
+0

Teşekkürler Indoknight! – salemkhoo

+0

Temiz ve basit. – JustinBieber

+0

merhaba Guys, cevabınız için teşekkürler, şüphelerimi nasıl yazdırabildiğimdir. Çizgiyi yazdırmaya çalıştığımda dizi var [Ljava.lang.String; @ d8dc5a. Herkes bana hatların içeriğini yazdırmanın doğru yolunun ne olduğunu önerebilir. – Chinmoy

7

basit çözüm: 1,7

1

JAVA 8:

Files.lines(new File("/home/abdennour/path/to/file.txt").toPath()).collect(Collectors.toList()); 
1

Sorununu için bu tam kodu kullanabilirsiniz. diğer ayrıntılar için appucoder.com

class FileDemoTwo{ 
    public static void main(String args[])throws Exception{ 
     FileDemoTwo ob = new FileDemoTwo(); 
     BufferedReader in = new BufferedReader(new FileReader("read.txt")); 
     String str; 
     List<String> list = new ArrayList<String>(); 
     while((str =in.readLine()) != null){ 
      list.add(str); 
     } 
     String[] stringArr = list.toArray(new String[0]); 
     System.out.println(" "+Arrays.toString(stringArr)); 
    } 

}