java File Reader in HashMap speichern, FileNotFoundException

TheRealAmex

Cadet 4th Year
Registriert
Dez. 2016
Beiträge
107
Hallo, ich habe ein Problem mit meinem Code. Meine Aufgabe ist es ein Login System zu erstellen. Dies war auch kein Problem. Nun muss ich jedoch eine .txt Datei einlesen und diese in eine Hashmap speichern. Dies funktioniert zwar jedoch in einer separaten Klasse. Ich möchte jedoch gerne dieselbe Klasse benutzen. Das sind meine beiden Codes die ich bereits habe.

public class IDandPasswords {

HashMap<String,String> logininfo = new HashMap<String,String>();

IDandPasswords(){

logininfo.put("1234","pizza");
logininfo.put("Brometheus","PASSWORD");
logininfo.put("BroCode","abc123");
}

public HashMap getLoginInfo(){
return logininfo;
}
}

*******
public class ewtq {

File datei = new File("test.txt");
Scanner input = new Scanner(datei);

HashMap<Integer, String> logininfo = new HashMap<Integer, String>();
String idPas = new String();
String[] split = null;
{
while (input.hasNext()) {
idPas = idPas + ";" + input.next();

split = idPas.split(";");
}
int i = 1;
while (i < split.length) {
logininfo.put(Integer.parseInt(split), split[i + 1]);
i = i + +2;
}
}
}

Ich brauche am Ende
public HashMap getLoginInfo(){
return logininfo;
um in meiner anderen Klasse darauf zugreifen zu können. Dies ist aber nicht möglich wenn ich public void als Constructor habe um FileNotFoundException zu initialisieren. Gibt es eine Möglichkeit das anders zu lösen?

Schon einmal vielen Dank
 
ich muss zugeben, ich hab nicht verstanden was du machen willst. Ich verstehe jetzt nicht warum du nicht die komplete Logik in eine Klasse schreiben kannst.

TheRealAmex schrieb:
Dies ist aber nicht möglich wenn ich public void als Constructor habe um FileNotFoundException zu initialisieren.
den Satz verstehe ich schon gar nicht. "public void" als Konstruktor? In Java deklariert man keine Konstruktor so. Um FileNotFoundException zu initialisieren? Kannst du das nochmal anders formulieren?
Dass der Pfad von der Datei relativ angegeben ist, hast du aber gesehen? Der muss dann mit dem Classpath zur Laufzeit auch passen. Warum laedst du solche Ressourcen nicht ueber den ClassLoader?

Bzgl. Code Style koennte man jetzt Nameng-Conventions, Interface nuzten (Map vs HashMap), StringBuffer etc. anmerken, aber erstmal nicht relevant.
Aber einen "richtigen" Konstruktor oder Methoden wolltest du in der 2. Klasse wohl nicht nutzen? Hat das einen Grund?

Uebrigens bietet das Forum Code Tags an, die machen Quellcode lesbarer. Evtl. kanst du deine Frage je noch editieren?
 
ich denke das problem ist "File datei = new File("test.txt");" diese Datei muss neben der jar datei liegen.
insgesamt würde ich aber die Datei (File) oder den Pfad zu ihr als Parameter übergeben.
 
Hallo, ich hab mich vielleicht etwas schwammig ausgedrückt
abcddcba schrieb:
den Satz verstehe ich schon gar nicht. "public void" als Konstruktor? In Java deklariert man keine Konstruktor so. Um FileNotFoundException zu initialisieren? Kannst du das nochmal anders formulieren?
Dass der Pfad von der Datei relativ angegeben ist, hast du aber gesehen? Der muss dann mit dem Classpath zur Laufzeit auch passen. Warum laedst du solche Ressourcen nicht ueber den ClassLoader?
Um meinen File Reader zum laufen zu bringen habe ich public static void main( String[] args ) throws FileNotFoundException gewählt. Ich brauche jedoch ein return Wert, was mit der void Methode aber nicht möglich ist. Ich kann jedoch nichts anderes als public static void main benutzen, weil mir sonst immer eine Fehlermeldung angezeigt wird. Die Datei lässt sich einwandfrei einlesen. Den ClassLoader habe ich nicht benutzt, da wir den im Unterricht noch nicht durchgenommen haben.
 
Zurück
Oben