Keine Launch Configuration Eclipse

shredding

Mitglied
Ich bin recht neu bei Java, habe aber schon einige Erfahrung in PHP und Actionscript. Wie dem auch sei, ich habe ein paar Fragen, die mich zur Verzweiflung treiben. Eben weil ich weiß, dass die Antwort recht einfach ist, ich es aber nicht verstehe.

Vielleicht antwortet ja jemand!

1. Beim Export aus meiner IDE (Aptana, Java ist nachinstalliert) möchte ich exportieren als Runnable Jar. Das hat auch schonmal geklappt, aber nachdem ich heute erneut versuche, kann ich im Wizard keine Launch Configuration auswählen. Es ist einfach alles weiß. Daher ist auch der NEXT Button ausgegraut und ich check nicht was ich machen muss.

2. In einem hübschen Buch ("Einstieg in Java 6"), steht unter anderem dieser Code:

Java:
// Copying process
					int numberOfBytes;
					byte[] buffer = new byte[32768];
					
					FileInputStream in = new FileInputStream(source);
					FileOutputStream out = new FileOutputStream(newDest);
					
					while((numberOfBytes = in.read(buffer)) > 0) {
						out.write(buffer, 0, numberOfBytes);
					}
					
					in.close();
					out.close();
Ich weiß natürlich was da grob passiert, verstehe das Prinzip des Buffer aber nicht richtig. Kann das jemand bitte beschreiben? Vor allem, was genau passiert in der while Schleife?

Ich verstehe es so: Es werden in in.read beständig Daten eingelesen und der Speicher soll nicht mehr als 32768 betragen, es ist also eine Art stream. Aber wie funktioniert nun diese While Schleife? Der in.read wird ja nie geleert...

Vielen Dank!
 
Ich verstehe es so: Es werden in in.read beständig Daten eingelesen und der Speicher soll nicht mehr als 32768 betragen, es ist also eine Art stream. Aber wie funktioniert nun diese While Schleife? Der in.read wird ja nie geleert...
Beim jedem Aufruf von [c]in.read(buffer)[/c] wird das Byte-Array [c]buffer[/c] neu von vorne befüllt. Immer mit einer neuen Portion aus dem FileInputStream. Die einzulesende Datei darf also selbstverständlich größer sein als der Puffer (im Beispiel 32768 Bytes).

Stell dir vor du liest ein Buch, und als Lesehilfe legst du ein Lineal unter die Zeile, die du gerade liest. Diese Buch-Zeile kommt in deinen Puffer. Wenn du den Puffer verarbeitet hast (also die Zeile verstanden hast), schiebst du das Lineal eine Zeile weiter, und dein Puffer wird neu gefüllt. Solange bis das Buch (der InputStream) beendet ist.

Das Verschieben des Lineals geschieht in Java automatisch durch den Aufruf von [c]read[/c].

Beim Stream-Einlesen wird das Byte-Array [c]buffer[/c] möglicherweise nicht komplett gefüllt, sondern nur teilweise. Die tatsächliche Füllung steht bei deinem Beispiel in [c]numberOfBytes[/c]. Beim Schreiben mit [c]out.write[/c] muss dies beachtet werden, damit keine Null-Bytes in den Ausgabestrom geschrieben werden.
 
Zuletzt bearbeitet:
mit [c]byte[] buffer = new byte[32768];[/c]
wird ein Array (gelegentlich auch "Feld" genannt) aus 32768 einzelnen Bytes angelegt. Das müsste in deinem Einsteiger-Buch eigentlich erklärt werden.
Oder in JAVA: 6.2 Arrays bzw. Unterkapiteln.

Zu deinem Eclipse-Problem kann ich dir erst mal nichts sagen....
 

Zurück
Oben