2013-04-19 6 views
9

सभी में लाइन द्वारा टेक्स्ट टेक्स्ट सामग्री सामग्री स्टोर करें, अब मुझे सरणी में टेक्स्ट फ़ाइल में सामग्री को संग्रहीत करने के बारे में कोई जानकारी नहीं है। ,सरणी

abc1 
xyz2 
rxy3 

मैं उन्हें लाइन द्वारा सरणी लाइन में स्टोर करने के लिए चाहते हैं कि संभव है: स्थिति, की तरह है पाठ फ़ाइल सामग्री? मुझे उम्मीद है कि इस तरह है:

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

मैंने ऐसा कुछ करने की कोशिश की है, लेकिन ऐसा लगता है कि मेरे लिए काम नहीं है। अगर कोई मेरी मदद कर सकता है, तो वास्तव में बहुत धन्यवाद।

कोड है:

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

* पर यह जाँच "लेकिन मेरे लिए काम नहीं की तरह लग" * क्या त्रुटि या अपवाद के परिणामस्वरूप कर सकते हैं? फोरम पर इसे [प्रश्न में संपादित करें] के रूप में कॉपी/पेस्ट करें (http://stackoverflow.com/posts/16100175/edit)। –

+0

यदि आप प्रत्येक सरणी तत्व में पूरी लाइन चाहते हैं, तो आप इसे क्यों विभाजित कर रहे हैं? – NilsH

+0

मैंने सोचा कि विभाजन ("") मुझे अगली पंक्ति को अलग करने में मदद कर सकता है? ताकि यह ग्रहणाधिकार 1,2,3 हो सके .. – salemkhoo

उत्तर

18

मैं एक ArrayList, जो गतिशील आकार हैंडल का उपयोग कर, जबकि एक सरणी सामने एक परिभाषित आकार की आवश्यकता होगी, जो आपको पता नहीं हो सकता की सिफारिश करेंगे। आप हमेशा सूची को सरणी में बदल सकते हैं।

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]); 
+0

आपके मार्गदर्शन के लिए धन्यवाद, केविन, आप वास्तव में मुझे बहुत मदद करते हैं, धन्यवाद! – salemkhoo

+0

हाय केविन, आपके उत्तर के लिए धन्यवाद, मेरा संदेह यह है कि जब मैं stringArr मुद्रित करने का प्रयास करता हूं तो मैं stringArr को प्रिंट कैसे कर सकता हूं मुझे कुछ आउटपुट मिल रहा है जैसे [Ljava.lang.String; @ 17bd8e। क्या कोई मुझे सुझाव दे सकता है स्ट्रिंगअर की सामग्री मुद्रित करने का सही तरीका क्या है। – Chinmoy

1

इस प्रयास करें:

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)); 
2

आप अपने मामले के लिए कुछ इस तरह करने की जरूरत है: -

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

लेकिन ध्यान दें कि arr ठीक से घोषित किया जाना चाहिए, संख्या के अनुसार आपकी फाइल में प्रविष्टियों का।

सुझाव: - उपयोग एक List बजाय

1

(उस के लिए @Kevin बोवेरसोक्स पोस्ट को देखो) जब आप str = in.readLine()) != null आप str चर में एक पंक्ति पढ़ते हैं और अगर यह अशक्त while ब्लॉक पर अमल नहीं कर रहा है। आपको arr[i] = in.readLine(); में एक और बार लाइन पढ़ने की आवश्यकता नहीं है। जब आप इनपुट फ़ाइल (लाइनों की संख्या) के सटीक आकार को नहीं जानते हैं तो सरणी के बजाय सूचियों का भी उपयोग करें।

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

आपकी जानकारी के लिए धन्यवाद, सिक्योरेटर! – salemkhoo

3

इसका कारण यह है कि यह सूची का उपयोग करता है कि आप कितने पंक्तियों को फ़ाइल में नहीं होगा पता नहीं है के रूप में है और यह भी कि वे बाद में बदल सकते हैं काम करना चाहिए।

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

धन्यवाद इंडोकनाइट! – salemkhoo

+0

स्वच्छ और सरल। – JustinBieber

+0

हाय दोस्तों, उत्तर के लिए धन्यवाद, मेरा संदेह यह है कि मैं लाइनों को प्रिंट कैसे कर सकता हूं जब मैंने लाइनों को मुद्रित करने का प्रयास किया था, मुझे कुछ आउटपुट मिल रहा है जैसे [Ljava.lang.String; @ d8dc5a। क्या कोई मुझे बता सकता है कि लाइनों की सामग्री मुद्रित करने का सही तरीका क्या है। – Chinmoy

7

सरल समाधान:

List<String> list = Files.readAllLines(Paths.get("path/of/text"), StandardCharsets.UTF_8); 
String[] a = list.toArray(new String[list.size()]); 

ध्यान दें कि java.nio.file.Files है के बाद से 1,7

1

जावा 8:

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

आप अपनी समस्या के लिए यह पूरा कोड का उपयोग कर सकते हैं। अधिक जानकारी के लिए आप 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)); 
    } 

}