# Datei Splitten und Parsen



## Existenzhass (7. Nov 2013)

Hallo,

ich habe ein kleines Problem mit splitten einer Datei, genauer gesagt... Mit der Umwandlung. Ich habe versucht das Programm zu debuggen, aber es hatte nicht viel gebracht. Ich habe nähmlich herausbekommen, dass das Program bei Parsen hängen bleibt. Ich untersuche das Programm seit mehreren Tagen, aber mir fällt nichts auf, was da ein Problem sein könnte. Es würde mich sehr freuen, wenn jemand mir hefen könnte, denn ich bin nurnoch am verzweifeln.  Bis jetzt habe ich dies hier entwickelt: 

```
public void setInput() throws ParseException {//LogFile einlesen und splitten

		try {
			BufferedReader br = new BufferedReader(new FileReader(new File("apache.log")));//apache log einlesen
			String line = null;
			
			while ((line=br.readLine())!=null){
				try{

					slc.lineCount++;//line count
										
					String[] logEntry 	= line.split(" ");//splitt wenn: " "
					InetAddress ip 		= InetAddress.getByName(logEntry[0]);
					logc.ip 			= ip;//ip herausnehmen

					String ident 		= logEntry[1];
					logc.ident			= ident;//ident herausnehmen

					String benutzer		= logEntry[2];
					logc.benutzer		= benutzer;//benutzer herausnehmen

					DateFormat df		= new SimpleDateFormat("[d/MMMM/yyyy:H:m:s Z]");
					Date date 			= df.parse(logEntry[3] + logEntry[4]);
					logc.date			= date;//Datum herausnehmen

					String method		= logEntry[5];
					logc.method			= method;// \POST || \Get

					String post			="\"POST";
					String get 			="\"GET";
					
					if(logc.method == post){
						slc.postCount++;
					}else if(logc.method == get){
						slc.getCount++;
					}else
						slc.unknownCount++;
					
					entry = ip + ident + benutzer + date + method;
					
					logFile.add(entry);
					System.out.println(entry);
					
				}catch(java.text.ParseException e){
					System.err.println("Fehler beim Umwandeln!");
				}
			}

		} catch (FileNotFoundException e) {
			System.err.println("Datei konnte nicht gefunden werden!");
			e.printStackTrace();
		} catch (IOException e) {
			System.err.println("Fehler beim Einlesen!");
			e.printStackTrace();
		}
```

Vielen Dank erst mal!


----------



## eRaaaa (7. Nov 2013)

Existenzhass hat gesagt.:


> Ich habe nähmlich herausbekommen, dass das Program bei Parsen hängen bleibt.



Du hast ja richtig erkannt dass du das Datum auch splittest, weil da zwischen ebenfalls ein Leerzeichen ist und fügst beide Strings zusammen, du solltest hier allerdings das Leerzeichen dann beim Parsen wieder mit einfügen :


```
df.parse(logEntry[3] + " " +logEntry[4]);
```

Und Strings vergleicht man mit equals

```
if(logc.method == post){
                        slc.postCount++;
                    }else if(logc.method == get){
                        slc.getCount++;
```
->
if(post.equals(logc.method){ ....

[OT]*nämlich ....[/OT]


----------



## Existenzhass (7. Nov 2013)

Danke für die Rückmeldung! Doch, die Datum kann immer noch nicht umgewandelt werden. Es ist wie üblich "Fehler beim Umwandeln".


----------



## eRaaaa (8. Nov 2013)

Dann wäre es jetzt doch mal Zeit uns zu zeigen wie dein Apache Logfile aufgebaut ist...Und wie die Fehlermeldung lautet


----------



## Existenzhass (11. Nov 2013)

Danke für eure Hilfe, Problem erledigt, Thema kann geschlossen, oder jenachdem... Gelöscht werden.


----------



## eRaaaa (11. Nov 2013)

Existenzhass hat gesagt.:


> Danke für eure Hilfe, Problem erledigt, Thema kann geschlossen, oder jenachdem... Gelöscht werden.



Gelöscht wird hier gar nichts, es wäre aber sehr schön gewesen wenn du geschrieben hättest woran es denn nun letztendlich lang. Evtl. hat jmd anderes der das Forum besucht ähnliche Fragen/Probleme


----------

