hi ihr lieben,
ich muss für die uni noch eine aufgabe lösen. kann mir bitte jemand helfen. Also ich komm zum Punkt. Es geht dadrum ein Program zu erweitern das CSV Datein ex- und importiert. Die Aufgabe hab ich so gelöst:
Das Programm funktioniert. Jedoch steht in der Fragestellung:
Erweitern Sie Ihre Lösung von Aufgabe 8 um
• die Möglichkeit die Datensätze des Verzeichnisses in einer CSV-Datei zu speichern und um
• die Möglichkeit das Verzeichnis mit den Datensätzen aus einer CSV–Datei initialisieren.
Das Format dieser Dateien soll sein:
Name,Vorname,Nr
BSP:
Müller,Lieschen,0123456
Hirsch,Hansi,336699
Pettersson,Findus,198400
Implementieren Sie dazu folgende Funktionen:
Mein Problem ist jetzt, ich hab die Schnittstelle manipuliert ? seh ich das richtig? weil auf sollche sachen wird besonders geachtet. Hinzu kommt das ich einfach mit
nicht klar komme wie ich das lösen kann.
ich muss für die uni noch eine aufgabe lösen. kann mir bitte jemand helfen. Also ich komm zum Punkt. Es geht dadrum ein Program zu erweitern das CSV Datein ex- und importiert. Die Aufgabe hab ich so gelöst:
Code:
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
public class CSV {
/**
* Lokalisiert Datei
* @param msg
* @param contentTypes
* Liste von Typen, von denen einer der Datei zugeornet sein muss
* Pfad der ausgwaehlten Datei
* @return
* @throws IOException
*/
public static Path locateFileWithType(String msg, String... contentTypes)
throws IOException {
JFileChooser fc = new JFileChooser();
File f = null;
Path p = null;
while (true) {
int returnVal = fc.showDialog(null, msg);
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = fc.getSelectedFile();
p = f.toPath();
if (Files.isRegularFile(p) && Files.isReadable(p)) {
for (String type : contentTypes) {
if (Files.probeContentType(p).equals(type)) {
return p;
}
}
}
JOptionPane.showMessageDialog(null,
"Der Datei Typ ist nicht CSV!");
} else
return null;
}
}
/**
* Liest eine Menge von Einträgen aus eine CSV-Datei (’,’-Separiert) und
* fügt diese Einträge in das Telefonverzeichnis ein, dabei gelten die
* gleichen Regeln wie berreits für addEntry
*
* @return Anzahl der gelesenen Einträge
* @throws IOException
* wenn file nicht lesbar oder ähnliches
*/
public static Map<String, String> readCSVFile(Path path, String seperator)
throws IOException {
boolean firstLine = true; // erste Zeile enthaelt Spalten? (=Attribut?)
// Namen
Map<String, String> entry = new HashMap<>();
for (String line : Files.readAllLines(path, Charset.defaultCharset())) {
if (firstLine) {
firstLine = false;
continue;
}
String[] values = line.split(seperator);
entry.put(values[0] + " " + values[1], values[2]);
}
JOptionPane.showMessageDialog(null, "Einträge wurden importiert");
return entry;
}
/**
* Schreibt alle Telefonbucheinträge in eine CSV-Datei
*
* @return Anzahl der geschriebenen Einträge oder -1 falls
* @throws IOException
* wenn file nicht schreibbar oder ähnliches
*/
public static void writeCSV(String path, String seperator)
throws IOException {
Map<String, String> allEntries = TelephoneDirectory.getpersEintrag();
FileWriter writer = new FileWriter(path);
StringBuilder entry = new StringBuilder();
entry.append("Name" + seperator); // Erste Zeile erstellen
// (Name|Vorname|Nummer)
entry.append("Vorname" + seperator);
entry.append("Nummer" + seperator + "\n");
for (String line : allEntries.keySet()) { // String erzeugen der in die
// CSV-Datei geschrieben
// werden soll
String[] entries = line.split("\\s", 2);
entry.append(entries[0] + seperator);
entry.append(entries[1] + seperator);
entry.append(allEntries.get(line) + "\n");
}
writer.append(entry);
writer.flush();
writer.close();
JOptionPane.showMessageDialog(null, "Einträge wurden exportiert");
}
}
Das Programm funktioniert. Jedoch steht in der Fragestellung:
Erweitern Sie Ihre Lösung von Aufgabe 8 um
• die Möglichkeit die Datensätze des Verzeichnisses in einer CSV-Datei zu speichern und um
• die Möglichkeit das Verzeichnis mit den Datensätzen aus einer CSV–Datei initialisieren.
Das Format dieser Dateien soll sein:
Name,Vorname,Nr
BSP:
Müller,Lieschen,0123456
Hirsch,Hansi,336699
Pettersson,Findus,198400
Implementieren Sie dazu folgende Funktionen:
Code:
/**
* Schreibt alle Telefonbucheinträge in eine CSV-Datei
*
* @return Anzahl der geschriebenen Einträge oder -1 falls
* @throws IOException wenn file nicht schreibbar oder ähnliches
*/
public static int writeCSV(File file) throws IOException {
}
/**
* Liest eine Menge von Einträgen aus eine CSV-Datei (’,’-Separiert)
* und fügt diese Einträge in das Telefonverzeichnis ein, dabei gelten
* die gleichen Regeln wie berreits für addEntry
*
* @return Anzahl der gelesenen Einträge
* @throws IOException wenn file nicht lesbar oder ähnliches
*/
public static int readCSV(File file) throws IOException {
}
Mein Problem ist jetzt, ich hab die Schnittstelle manipuliert ? seh ich das richtig? weil auf sollche sachen wird besonders geachtet. Hinzu kommt das ich einfach mit
Code:
public static int writeCSV(File file) throws IOException {
}
Zuletzt bearbeitet: