Ich schreibe eine kleine Java-Methode, die Testdaten aus einer Datei auf meinem Win10-Laptop lesen muss.

Die Testdaten wurden noch nicht erstellt, werden jedoch textbasiert sein.

Ich muss eine Methode schreiben, die die Daten liest und sie Zeichen für Zeichen analysiert.

Meine Fragen sind:

Was ist das einfachste Format zum Erstellen und Lesen der Datei? Ich habe mir JSON angesehen, etwas, das nicht besonders komplex aussieht, aber das beste für eine sehr einfache Anwendung ist.

Meine zweite Frage (und ich bin ein Neuling). Wenn sich die Datei in einer Textdatei auf meinem Laptop befindet ..... Wie kann ich meinem Java-Code mitteilen, wo er zu finden ist .... Wie kann ich Java bitten, im Win10-Betriebssystem zu navigieren?

0
user12824107 7 Feb. 2020 im 17:47

3 Antworten

Beste Antwort

Sie können die Textdatei auch Java-Objekten zuordnen (dies hängt von Ihrer Textdatei ab).

Zum Beispiel haben wir eine Textdatei, die den Namen und die Familie der Person Zeile für Zeile enthält, wie:

Foo,bar
John,doe

Um die obige Textdatei zu analysieren und sie einem Java-Objekt zuzuordnen, können wir:

1- Erstellen Sie ein Personenobjekt

2- Lesen und analysieren Sie die Datei (Zeile für Zeile)

Personenklasse erstellen

public class Person {

    private String name;
    private String family;

    //setters and getters
}

Lesen Sie die Datei und analysieren Sie sie Zeile für Zeile

public static void main(String[] args) throws IOException {

        //Read file
        //Parse line by line
        //Map into person object
        List<Person> personList = Files
                .lines(Paths
                        .get("D:\\Project\\Code\\src\\main\\resources\\person.txt"))
                .map(line -> {

                            //Get lines of test and split by ","
                            //It split words of the line and push them into  an array of string. Like "John,Doe" -> [John,Doe]
                            List<String> nameAndFamily = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(line);

                            //Create a new Person and get above words
                            Person person = new Person();
                            person.setName(nameAndFamily.get(0));
                            person.setFamily(nameAndFamily.get(1));
                            return person;
                        }
                ).collect(Collectors.toList());



        //Process the person list
        personList.forEach(person -> {
            //You can whatever you want to the each person 
            //Print
            System.out.println(person.getName());
            System.out.println(person.getFamily());
        });


    }
0
Mehrdad HosseinNejad 7 Feb. 2020 im 15:38

In Bezug auf das Format, das die Textdatei annehmen muss, sollten Sie die Art der Daten etwas näher erläutern. Also kann ich dort nicht viel sagen.

Um im Dateisystem zu navigieren, müssen Sie den Pfad nur etwas anders schreiben:

  • Der Laufwerksbuchstabe ist ein einzelnes Zeichen am Anfang des Pfades, d. H. Kein Doppelpunkt ":"
  • Ersetzen Sie den Backslash durch einen Schrägstrich

Dann solltest du eingestellt sein.

Also zum Beispiel ...

C:\users\johndoe\documents\projectfiles\mydatafile.txt 

Wird

 c/users/johndoe/documents/projectfiles/mydatafile.txt

Mit diesem Pfad können Sie alle E / A-Klassen für die Dateimanipulation verwenden.

0
Shivam Mohan 7 Feb. 2020 im 16:45

Zu Ihrer ersten Frage kann ich nicht viel sagen, ohne etwas über die Daten zu wissen, die Sie gerne schreiben / lesen.

Bei Ihrer zweiten Frage würden Sie normalerweise Folgendes tun:

String pathToFile = "C:/Users/SomeUser/Documents/testdata.txt";
InputStream in = new FileInputStream(pathToFile);

Wenn Ihre Daten immer komplexer werden, sollten Sie wahrscheinlich über die Verwendung eines definierten Formats nachdenken, wenn dies möglich ist, beispielsweise JSON, YAML oder ähnliches.

Hoffe das hilft ein bisschen. Viel Glück bei Ihrem Projekt.

0
Jan Held 7 Feb. 2020 im 15:14