String Array Werte in neues String Array übernehmen

Anubis273

Mitglied
Guten Morgen Forum 🙂

ich habe ein Problem mit einer Methode die ich mir programmiert habe. Diese Methode liest ein txt File ein und speichert in dem Array input[0] bis input[11] jeweils 670 Werte. Das heißt dass z.B. an input[3] 670 Hostnamen stehen, weil mein txt File eben 670 Zeilen lang ist.
Vergeblich versuche ich an hostnamen[j] welches Array ebenfalls 670 groß ist, alle Werte aus hostnamen[3] zu schreiben. Mittlerweile bin ich so verzweifelt, dass ich wirklich nicht weiter weiß und euch um Hilfe bitten muss 😳

Hier ist meine vollständige Methode zu dem Problem:

Java:
public static void leseHost() throws IOException {
		try {             
			BufferedReader br = new BufferedReader( new FileReader("C:/READSLD/INCOMING.TXT"));            
			String zeile = null;
			int zeilenNummer = 0; 
			int zeilenZaehler = 0;
			int i = 0;
			int j = 0;
			
			while((zeile = br.readLine()) != null) {   
				zeilenZaehler++; }
			String [] hostnamen = new String[zeilenZaehler]; 	// Das Array "hostnamen" bekommt die Länge der Anzahl der Zeilen
			br.close();
			// Hier lasse ich das Textfile schon einmal einlesen um die Anzahl der Zeilen zu ermitteln
			
			BufferedReader br1 = new BufferedReader( new FileReader("C:/READSLD/INCOMING.TXT")); 
			while((zeile = br1.readLine()) != null) {  
				zeilenNummer++; 
				String[] input = zeile.split(";");
				 if ( input[0].concat("   ").substring(0,3).equals("APP")){
					for (i=0; i<input.length; i++) {
						for (j=0; j<hostnamen.length-1; j++) {
							hostnamen[j] = input[3];  	// Hier versuche ich vergeblich an der j-Stelle von Hostnamen alle Werte aus input[3] zu
						}								// speichern. An input[3] stehen 671 Host Namen	
					}
				 }
				// System.out.println(hostnamen[j]); // funktioniert nicht und wirft OutOfBoundsException
				 System.out.println(input[3] +" "+ zeilenNummer); // Gibt Hostnamen und laufende Nummer aus !
				
			}    	
				
			
			
		} catch (FileNotFoundException e) {           
				e.printStackTrace();  
				}
			catch (IOException e) {           
				e.printStackTrace();    
			}
			catch (ArrayIndexOutOfBoundsException e) {
				e.printStackTrace(); 
			}
		}
 
[c]System.arraycopy()[/c] hilft, wenn du nicht einfach nur die Referenz aufs Array umbiegen willst ([c]hostnamen[j] = input[3];[/c]).
Java:
System.arraycopy(input[3], 0, hostnamen[j], 0, input[3].length);
 
Hallo Faetzminator,

die Idee ist im Grunde ganz gut, nur leider meckert der an, dass ich von input[3] die Stelle mit übergebe. Würde ich mit deiner Idee das vollständige input Array kopieren wollen, würde es funktionieren. In meinem Fall möchte ich aber halt nur die werte von vierter Stelle in das hostnamen Array kopieren. Ich komme da grad echt nicht weiter :bahnhof:

Anubis273
 
Hab mir den Code nun angeschaut. Dachte, das sind mehrdimensionale Arrays. Natürlich funktioniert mein Beispiel zum kopieren von Arrays, aber nicht für einzelne Werte.
Zuerst liest du das komplette File ein, nur um die Anzahl zu ermitteln. Das sollte man nicht machen. Dafür gibts "dynamische Arrays", implementieren das Interface [japi]List[/japi].
Hast du denn in [c]input[3][/c] mehrere Hostnamen? Wenn ja, einfach nochmals splitten und [c]addAll()[/c] verwenden. Ansonsten sieht der Code so aus, wenn ich deine Bedürfnisse korrekt aus meiner Glaskugel gelesen hab:
Java:
public static void leseHost() throws IOException {
    BufferedReader br = new BufferedReader(new FileReader("C:/READSLD/INCOMING.TXT"));
    List<String> hostnamen = new ArrayList<String>();

    String zeile;
    while ((zeile = br.readLine()) != null) {
        String[] input = zeile.split(";");
        if (input[0].startsWith("APP")) {
            hostnamen.add(input[3]);
            System.out.println(input[3]);
        }
    }
}
 
Wo liegt das Problem, was gibt er aus?
Wie sieht denn dein File aus?

Ich versteh irgenwie nicht was du willst
 

Zurück
Oben