2017-01-10 4 views
0

Ich habe eine Datei, die wie folgt aussieht:Wie für Namen in der Datei und extrahiert Wert suchen

Dwarf remains:0 
Toolkit:1 
Cannonball:2 
Nulodion's notes:3 
Ammo mould:4 
Instruction manual:5 
Cannon base:6 
Cannon base noted:7 
Cannon stand:8 
Cannon stand noted:9 
Cannon barrels:10 
... 

Was ist der einfachste Weg, um diese Datei zu öffnen, für Namen suchen und den Wert des Feldes zurückkehren? Ich kann keine externen Bibliotheken verwenden.

Was ich versucht habe/ist das ok?

public String item(String name) throws IOException{ 
    String line; 
    FileReader in = new FileReader("C:/test.txt"); 
    BufferedReader br = new BufferedReader(in); 


    while ((line = br.readLine()) != null) { 
     if(line.contains(name)){ 
      String[] parts = line.split(":"); 
      return parts[1]; 
     } 
    } 

    return null; 



} 
+0

Was haben Sie bisher versucht? Irgendwelche Bemühungen? –

+0

Öffnen Sie die Datei, lesen Sie Zeile für Zeile, verwenden Sie eine Regex, um nach dem Namen zu suchen, und wenn Sie die entsprechende Zeile gefunden haben, schließen Sie die Datei (falls erforderlich) und geben Sie den Wert zurück. Klassen zum Betrachten: 'File',' FileReader', 'BufferedReader' (zum einfachen Lesen von Zeilen),' String' (oder vielleicht 'Pattern' und' Matcher') usw. – Thomas

+0

einfach den Inhalt lesen und finden, was auch immer Sie wollen wollen ... und es wäre toll, wenn Sie den Code, den Sie versucht haben oder Fehler, die Sie konfrontiert sind. – Mohit

Antwort

0

Als eine Follow-up zu Ihrem Code - es kompiliert und funktioniert in Ordnung. Beachten Sie jedoch, dass / nicht das richtige Pfadtrennzeichen unter Windows ist (\ ist). Sie könnten den korrekten Pfad beispielsweise mit der folgenden Adresse erstellt haben: Paths.get("C:", "test.txt").toString(). Das korrekte Trennzeichen ist auch in File.separator definiert.

0

Die Aufgabe kann einfach mit grundlegenden Java-Funktionen gelöst werden. Zuerst müssen Sie die Datei öffnen und ihre Zeilen lesen. Es kann leicht mit Files.lines (Path.get ("path/to/file")) erreicht werden. Zweitens müssen Sie alle von diesen Anweisungen zurückgegebenen Zeilen durchlaufen. Wenn Sie die Stream-API nicht kennen, können Sie den von Files.lines (...) von Stream zurückgegebenen Wert in ein Array ändern, indem Sie String[] lines = Files.lines(Paths.get("path/to/file")).toArray(a -> new String[a]); verwenden. Jetzt lines Variable hat alle Zeilen aus der Eingabedatei.

Sie müssen dann jede Zeile in zwei Teile teilen (String.split) und sehen, ob der erste Teil gleich (String.equals) was Sie suchen. Dann gib einfach den zweiten zurück.

Verwandte Themen