<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.byte-welt.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marcinek</id>
	<title>Byte-Welt Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.byte-welt.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marcinek"/>
	<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php/Spezial:Beitr%C3%A4ge/Marcinek"/>
	<updated>2026-07-28T15:03:23Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Vererbung_(Java)&amp;diff=5441</id>
		<title>Vererbung (Java)</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Vererbung_(Java)&amp;diff=5441"/>
		<updated>2013-08-17T21:26:52Z</updated>

		<summary type="html">&lt;p&gt;Marcinek: Link zu Wikipedia hinzugefügt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden wird in anschaulicher Weise die Vererbung in Java, welches ein Teilbereich der Objektorientierung ist, beschrieben.&lt;br /&gt;
Alle Programme sehen, wenn man sie ausführt, genau gleich aus und bedienen sich auch gleich. Auch wenn der Quellcode immer wieder etwas anders ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fangen wir mit einem einfachen kleinen Programm an, das ein Fenster öffnet und drei Buttons erstellt. Zwei davon sind rot:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;     &lt;br /&gt;
      &lt;br /&gt;
                                          &lt;br /&gt;
            &lt;br /&gt;
       &lt;br /&gt;
       &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
    &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
            &lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|style=&amp;quot;width:1em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
&lt;br /&gt;
public class MyProgram {&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame f = new JFrame(&amp;quot;My Window&amp;quot;);&lt;br /&gt;
    JPanel p = new JPanel();&lt;br /&gt;
    JButton b1 = new JButton(&amp;quot;Button 1&amp;quot;);&lt;br /&gt;
    JButton b2 = new JButton(&amp;quot;Button 2&amp;quot;);&lt;br /&gt;
    JButton b3 = new JButton(&amp;quot;Button 3&amp;quot;);&lt;br /&gt;
    b1.setBackground(new Color(255,0,0));&lt;br /&gt;
    b3.setBackground(new Color(255,0,0));&lt;br /&gt;
    p.add(b1);&lt;br /&gt;
    p.add(b2);&lt;br /&gt;
    p.add(b3);&lt;br /&gt;
    f.add(p);&lt;br /&gt;
    f.pack();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch &amp;quot;new&amp;quot; wird ein neues Objekt (eine Instanz) erstellt, das eine Kopie des Hauptobjekts ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Betrachten wir uns nun &#039;&#039;JFrame&#039;&#039;. Man kann in Java eine neue Klasse erstellen (sofern die Klasse, von der sie sich ableitet, nicht &amp;quot;&#039;&#039;private&#039;&#039;&amp;quot; ist), die sämtliche Eigenschaften der Klasse, von der sie abgeleitet wurde, erbt.&lt;br /&gt;
&lt;br /&gt;
In folgendem Programm habe ich nun eine Klasse &#039;&#039;MyFrame&#039;&#039; erstellt, die mittels &#039;&#039;extends&#039;&#039; von der Klasse &#039;&#039;JFrame&#039;&#039; alle Eigenschaften erbt:&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
&lt;br /&gt;
public class MyFrame extends JFrame {&lt;br /&gt;
  MyFrame(String name) {&lt;br /&gt;
    super(name);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
                                          &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
    &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|style=&amp;quot;width:1em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
&lt;br /&gt;
public class MyProgram {&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MyFrame f = new MyFrame(&amp;quot;My Window&amp;quot;);&lt;br /&gt;
    JPanel p = new JPanel();&lt;br /&gt;
    JButton b1 = new JButton(&amp;quot;Button 1&amp;quot;);&lt;br /&gt;
    JButton b2 = new JButton(&amp;quot;Button 2&amp;quot;);&lt;br /&gt;
    JButton b3 = new JButton(&amp;quot;Button 3&amp;quot;);&lt;br /&gt;
    b1.setBackground(new Color(255,0,0));&lt;br /&gt;
    b3.setBackground(new Color(255,0,0));&lt;br /&gt;
    p.add(b1);&lt;br /&gt;
    p.add(b2);&lt;br /&gt;
    p.add(b3);&lt;br /&gt;
    f.add(p);&lt;br /&gt;
    f.pack();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Im Programm &#039;&#039;MyProgram&#039;&#039; wird nun &#039;&#039;MyFrame&#039;&#039; auch genau so genutzt und behandelt wie zuvor &#039;&#039;JFrame&#039;&#039;. Und das Ergebnis ist ebenfalls gleich.&lt;br /&gt;
In &#039;&#039;MyProgram&#039;&#039; wird &#039;&#039;MyFrame&#039;&#039; genau ein Argument übergeben: Der String &amp;quot;&#039;&#039;My Window&#039;&#039;&amp;quot;.&lt;br /&gt;
Die Anzahl und Art der Argumente muss im Konstruktor von der &#039;&#039;MyFrame&#039;&#039;-Klasse auch vorkommen: &#039;&#039;MyFrame(String name)&#039;&#039;.&lt;br /&gt;
Und damit dieses Argument wiederum auch an das eigentliche &#039;&#039;JFrame&#039;&#039; übergeben wird, steht dort &#039;&#039;super(name)&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;MyFrame&#039;&#039; ist ein neues Objekt. Ich kann ihm sämtliche Eigenschaften meines Programms geben:&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
&lt;br /&gt;
public class MyFrame extends JFrame {&lt;br /&gt;
&lt;br /&gt;
  MyFrame() {&lt;br /&gt;
    super(&amp;quot;My Window&amp;quot;);&lt;br /&gt;
    JPanel p = new JPanel();&lt;br /&gt;
    JButton b1 = new JButton(&amp;quot;Button 1&amp;quot;);&lt;br /&gt;
    JButton b2 = new JButton(&amp;quot;Button 2&amp;quot;);&lt;br /&gt;
    JButton b3 = new JButton(&amp;quot;Button 3&amp;quot;);&lt;br /&gt;
    b1.setBackground(new Color(255,0,0));&lt;br /&gt;
    b3.setBackground(new Color(255,0,0));&lt;br /&gt;
    p.add(b1);&lt;br /&gt;
    p.add(b2);&lt;br /&gt;
    p.add(b3);&lt;br /&gt;
    this.add(p);&lt;br /&gt;
    this.pack();&lt;br /&gt;
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    this.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|style=&amp;quot;width:1em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;public class MyProgram {&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MyFrame f = new MyFrame();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
    &lt;br /&gt;
     &lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Somit wird nun nur &#039;&#039;MyFrame&#039;&#039; aufgerufen. In &#039;&#039;MyFrame&#039;&#039; ist alles drin enthalten.&lt;br /&gt;
Man muss es wie eine Komponente sehen. Das Programmm sieht zwar beim Ausführen wieder genau gleich aus, aber vom Programmaufbau ist es nun etwas anders. Ich kann z.B. nun &#039;&#039;MyFrame&#039;&#039; als Komponente in andere Programme integrieren. Befehle wie &#039;&#039;JButton&#039;&#039; brauche ich in dem anderen Programm dann nicht zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;main()&#039;&#039;-Methode in &#039;&#039;MyProgram&#039;&#039; kann man in jede beliebige Klasse schreiben. So kann man sie auch direkt in &#039;&#039;MyFrame&#039;&#039; schreiben:&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
&lt;br /&gt;
public class MyFrame extends JFrame {&lt;br /&gt;
&lt;br /&gt;
  MyFrame() {&lt;br /&gt;
    super(&amp;quot;My Window&amp;quot;);&lt;br /&gt;
    JPanel p = new JPanel();&lt;br /&gt;
    JButton b1 = new JButton(&amp;quot;Button 1&amp;quot;);&lt;br /&gt;
    JButton b2 = new JButton(&amp;quot;Button 2&amp;quot;);&lt;br /&gt;
    JButton b3 = new JButton(&amp;quot;Button 3&amp;quot;);&lt;br /&gt;
    b1.setBackground(new Color(255,0,0));&lt;br /&gt;
    b3.setBackground(new Color(255,0,0));&lt;br /&gt;
    p.add(b1);&lt;br /&gt;
    p.add(b2);&lt;br /&gt;
    p.add(b3);&lt;br /&gt;
    this.add(p);&lt;br /&gt;
    this.pack();&lt;br /&gt;
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    this.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MyFrame f = new MyFrame();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|style=&amp;quot;width:1em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;/code=java&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das hat den enormen Vorteil, dass man in Java in mehreren Klassen &#039;&#039;main()&#039;&#039;-Methoden haben kann.&lt;br /&gt;
Man kann dann das Programm entweder von der eigentlichen Klasse aus starten oder aber auch einfach die &#039;&#039;main()&#039;&#039;-Methode in einer der Komponenten. In letzterem Fall hat man dann z.B. ein Programm, das nur die eine Komponente ausführt. Somit muss man nicht immer das ganze Programm starten, wenn man nur mal kurz Veränderungen an einer Komponente testen will.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Genauso wie wir nun &#039;&#039;MyFrame&#039;&#039; erstellt haben, können wir auch eine Klasse namens &#039;&#039;RedButton&#039;&#039; erstellen, dessen Aufgabe es ist, einen roten Button zu erstellen:&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
&lt;br /&gt;
public class RedButton extends JButton {&lt;br /&gt;
&lt;br /&gt;
  RedButton(String name) {&lt;br /&gt;
    super(name);&lt;br /&gt;
    this.setBackground(new Color(255,0,0));&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|style=&amp;quot;width:1em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
&lt;br /&gt;
public class MyProgram {&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MyFrame f = new MyFrame(&amp;quot;My Window&amp;quot;);&lt;br /&gt;
    JPanel p = new JPanel();&lt;br /&gt;
    RedButton b1 = new RedButton(&amp;quot;Button 1&amp;quot;);&lt;br /&gt;
    JButton b2 = new JButton(&amp;quot;Button 2&amp;quot;);&lt;br /&gt;
    RedButton b3 = new RedButton(&amp;quot;Button 3&amp;quot;);&lt;br /&gt;
    p.add(b1);&lt;br /&gt;
    p.add(b2);&lt;br /&gt;
    p.add(b3);&lt;br /&gt;
    f.add(p);&lt;br /&gt;
    f.pack();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle sieht man auch besser den Sinn der abgeleiteten Klassen. Nun wurden zwei &#039;&#039;JButton&#039;&#039;s direkt zu &#039;&#039;RedButton&#039;&#039;s. Wenn man bedenkt, dass sämtliche Swing-Komponenten wie &#039;&#039;JButton&#039;&#039; gezeichnet werden, so ist es eine erhebliche Arbeitserleichterung, dass das Programm dahinter nur einmal geschrieben wurde und dann immer wieder genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Zu guter Letzt nun auch noch mal die Klasse &#039;&#039;RedButton&#039;&#039; in Kombination mit der Klasse &#039;&#039;MyFrame&#039;&#039;:&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
import java.awt.*;&lt;br /&gt;
&lt;br /&gt;
public class RedButton extends JButton {&lt;br /&gt;
&lt;br /&gt;
  RedButton(String name) {&lt;br /&gt;
    super(name);&lt;br /&gt;
    this.setBackground(new Color(255,0,0));&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|style=&amp;quot;width:1em&amp;quot;|&lt;br /&gt;
|style=&amp;quot;width:30em&amp;quot;|&amp;lt;code=java&amp;gt;import javax.swing.*;&lt;br /&gt;
&lt;br /&gt;
public class MyFrame extends JFrame {&lt;br /&gt;
&lt;br /&gt;
  MyFrame() {&lt;br /&gt;
    super(&amp;quot;My Window&amp;quot;);&lt;br /&gt;
    JPanel p = new JPanel();&lt;br /&gt;
    RedButton b1 = new RedButton(&amp;quot;Button 1&amp;quot;);&lt;br /&gt;
    JButton b2 = new JButton(&amp;quot;Button 2&amp;quot;);&lt;br /&gt;
    RedButton b3 = new RedButton(&amp;quot;Button 3&amp;quot;);&lt;br /&gt;
    p.add(b1);&lt;br /&gt;
    p.add(b2);&lt;br /&gt;
    p.add(b3);&lt;br /&gt;
    this.add(p);&lt;br /&gt;
    this.pack();&lt;br /&gt;
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    this.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MyFrame f = new MyFrame();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/code=java&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
[http://de.wikipedia.org/wiki/Vererbung_%28Programmierung%29 &#039;&#039;Wikipedia: Vererbung in der Programmierung.&#039;&#039;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java Grundlagen]]&lt;/div&gt;</summary>
		<author><name>Marcinek</name></author>
	</entry>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Ftp-Client_Tutorial&amp;diff=5440</id>
		<title>Ftp-Client Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Ftp-Client_Tutorial&amp;diff=5440"/>
		<updated>2013-08-17T21:22:32Z</updated>

		<summary type="html">&lt;p&gt;Marcinek: /* Das Frame */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Java Ftp  Client Tutorial =&lt;br /&gt;
Mache mich mal dran ein Ftp Tutorial zu schreiben. In unserem Tutorial erstellen wir einen FTP Server. Wir verwenden für Das Tutorial die mitgelieferte Klasse aus der neusten Java Version. Für dieses Tutorial solltest du die Grundlagen von Java kennen. Auch empfehle ich eine IDE zu benutzen, die über einen Designer verfügt. &lt;br /&gt;
&lt;br /&gt;
== Importe ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
import java.awt.List;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileNotFoundException;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.net.InetAddress;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.SocketAddress;&lt;br /&gt;
import java.net.UnknownHostException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.logging.Level;&lt;br /&gt;
import java.util.logging.Logger;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JCheckBox;&lt;br /&gt;
import javax.swing.JDialog;&lt;br /&gt;
import javax.swing.JFileChooser;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.UnsupportedLookAndFeelException;&lt;br /&gt;
import javax.swing.tree.DefaultTreeModel;&lt;br /&gt;
import javax.swing.tree.MutableTreeNode;&lt;br /&gt;
import sun.net.ftp.FtpClient;&lt;br /&gt;
import sun.net.ftp.FtpDirEntry;&lt;br /&gt;
import sun.net.ftp.FtpProtocolException;&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Das Frame ==&lt;br /&gt;
Ich habe bei mir das Frame mit einer IDE geschrieben, die einen Designer verwendet, aber erfahrene Java Programmierer sollten dies&lt;br /&gt;
auch in wenigen Minuten mit einer DIE, die ohne Designer arbeitet hinbekommen.&lt;br /&gt;
In dem folgenden Bild seht ihr, wie ich das Frame aufgebaut habe.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Bild22.PNG|mini|hochkant=1.8|Das Frame]]&lt;br /&gt;
&lt;br /&gt;
Wie man sieht befinden sich auf dem Frame drei Listen und ein Menüstrip mit zwei Menüs, drei Textfelder, ein Passwortfeld und ein Button. Ich habe folgende Listen - Modelle den jeweiligen Listen zugeordnet:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Liste1 (DefaultListModel) mod (Zeigt die Verzeichnisse an und verfügt über ein Click ActionEvent&lt;br /&gt;
* Liste2 (DefaultListModel) Fmod (Zeigt die Dateien aus dem aktuellen Verzeichniss an.&lt;br /&gt;
* Liste3 (DefaultListModel) Cmod (Dient als interne Console)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Textfelder werden wie folgt verwendet&lt;br /&gt;
&lt;br /&gt;
* TextFeld1 Hier wird der Server Angegeben&lt;br /&gt;
* Textfeld2 Hier wird der Port Angegeben (Bei vielen Servern ist dies der Standard Port 21)&lt;br /&gt;
* Textfeld3 Hier kommt der Benutzername rein&lt;br /&gt;
* PasswordFeld1 Das Passwort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Menü ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
** Verbinden&lt;br /&gt;
** Trenen&lt;br /&gt;
** Daten Uploaden&lt;br /&gt;
** Daten Downloaden&lt;br /&gt;
** Daten Löschen&lt;br /&gt;
** Verzeichniss Löschen&lt;br /&gt;
** Verzeichniss Erstellen&lt;br /&gt;
&lt;br /&gt;
* Edit&lt;br /&gt;
** Übergeordneter Ordner&lt;br /&gt;
&lt;br /&gt;
== Die Codes ==&lt;br /&gt;
&lt;br /&gt;
=== Variabeln in der Klasse ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
//Suchen nach&lt;br /&gt;
public class main extends javax.swing.JFrame {&lt;br /&gt;
//hier diese Einträge Darunter Setzen&lt;br /&gt;
	public DefaultListModel mod;&lt;br /&gt;
	public FtpClient ftp;&lt;br /&gt;
	public FtpDirEntry direlement;&lt;br /&gt;
	public DefaultListModel Fmod;&lt;br /&gt;
	public DefaultListModel Cmod;&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Listen Initialisieren ===&lt;br /&gt;
Ich habe So die Listen Initalisiert&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
public main() {&lt;br /&gt;
initComponents();&lt;br /&gt;
// Hinzufügen&lt;br /&gt;
mod = new DefaultListModel();&lt;br /&gt;
jList1.setModel(mod);&lt;br /&gt;
Fmod = new DefaultListModel();&lt;br /&gt;
jList2.setModel(Fmod);&lt;br /&gt;
Cmod = new DefaultListModel();&lt;br /&gt;
jList3.setModel(Cmod);  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Verbinden Action Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Elemente aus Modellen Löschen&lt;br /&gt;
        	Fmod.removeAllElements();&lt;br /&gt;
        	mod.removeAllElements();&lt;br /&gt;
        	// deklariren&lt;br /&gt;
        	// Deklarieren des List Models&lt;br /&gt;
        	mod = (DefaultListModel) jList1.getModel();&lt;br /&gt;
        	// holen des Inhaltes aus der Server Text Box&lt;br /&gt;
        	String servUrl=jTextField1.getText();&lt;br /&gt;
        	// holen des Inhaltes aus der Port Text Box&lt;br /&gt;
        	int port=Integer.parseInt(jTextField2.getText());&lt;br /&gt;
        	// Internet Adresse umwandln in IP&lt;br /&gt;
        	String ipAdr = InetAddress.getByName(servUrl).getHostAddress();&lt;br /&gt;
        	// Consolen Anzeige&lt;br /&gt;
        	Cmod.addElement(&amp;quot;Encode Adresse &amp;quot; + servUrl + &amp;quot; in IP Adresse &amp;quot; + ipAdr);&lt;br /&gt;
        	System.out.println(&amp;quot;Endode Addresse in IP: &amp;quot; + ipAdr);   	&lt;br /&gt;
        	// Socket Addresse Deklarieren&lt;br /&gt;
        	SocketAddress sAdr = new InetSocketAddress(ipAdr,port);&lt;br /&gt;
        	// Deklarieren des ftpClients&lt;br /&gt;
        	ftp =  FtpClient.create();&lt;br /&gt;
 &lt;br /&gt;
        	// Benutzername Festelgen&lt;br /&gt;
        	String userName = jTextField3.getText();&lt;br /&gt;
 &lt;br /&gt;
        	//Verbindung Aufbauen&lt;br /&gt;
        	ftp.connect(sAdr);&lt;br /&gt;
        	//Wen Verbindung Besteht, einlogen&lt;br /&gt;
        	if(ftp.isConnected()==true){&lt;br /&gt;
            	// Console giebt aus das wir uns erfolgreich verbunden haben&lt;br /&gt;
            	Cmod.addElement(&amp;quot;Erfolgreich mit Server &amp;quot; + ipAdr + &amp;quot; Verbunden&amp;quot;);&lt;br /&gt;
            	System.out.println(&amp;quot;Erfolgreich mit Server &amp;quot; + ipAdr + &amp;quot; Verbunden&amp;quot;);&lt;br /&gt;
             	// Wir lassen Uns die Begrüßungsnachricht ausgeben&lt;br /&gt;
            	System.out.print(ftp.getWelcomeMsg());&lt;br /&gt;
            	Cmod.addElement(ftp.getWelcomeMsg());&lt;br /&gt;
            	// Hier Loggen wir uns in den Server ein&lt;br /&gt;
            	ftp.login(userName, jPasswordField1.getPassword());&lt;br /&gt;
            	// Wenn wir Eingelogt Sind &lt;br /&gt;
            	if(ftp.isLoggedIn()==true){&lt;br /&gt;
                	// Wir Bekommen eine nachricht vom Server das wir uns Erfolgreich Eingelogt sind&lt;br /&gt;
                	Cmod.addElement(&amp;quot;User &amp;quot; + userName + &amp;quot; Access Garanted&amp;quot;);&lt;br /&gt;
                	System.out.println(&amp;quot;User: &amp;quot; + userName + &amp;quot; ist erfolgreich im Server eingelogt&amp;quot;);&lt;br /&gt;
                	// Nun deklarieren wir unser Aktuelles Verzeichniss&lt;br /&gt;
                	String dir = ftp.getWorkingDirectory();&lt;br /&gt;
                	// Nun lesen wir die Verzeichnisse Aus&lt;br /&gt;
                	Iterator&amp;lt;FtpDirEntry&amp;gt; dirlist = ftp.listFiles(dir);&lt;br /&gt;
                	// Listview Model leeren&lt;br /&gt;
                	mod.removeAllElements();&lt;br /&gt;
                	// hinzufügen der neune Verzeichnisse&lt;br /&gt;
                	while(dirlist.hasNext()){&lt;br /&gt;
                   	// elemnt in die DirEntry hinzufügen&lt;br /&gt;
                   	direlement = dirlist.next();&lt;br /&gt;
                   	// Prüfen ob es ein Verzeichniss ist&lt;br /&gt;
                   	if(direlement.getType()==FtpDirEntry.Type.DIR){&lt;br /&gt;
                       	// in Model Hinzufügen&lt;br /&gt;
                       	mod.addElement(direlement.getName());&lt;br /&gt;
                   	}&lt;br /&gt;
                   	if(direlement.getType()==FtpDirEntry.Type.FILE){&lt;br /&gt;
                       	Fmod.addElement(direlement.getName());&lt;br /&gt;
                   	}&lt;br /&gt;
                	}&lt;br /&gt;
            	}&lt;br /&gt;
        	}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    	} catch (UnknownHostException ex) {&lt;br /&gt;
        	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    	} catch (FtpProtocolException ex) {&lt;br /&gt;
        	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    	} catch (IOException ex) {&lt;br /&gt;
        	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    	}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Trennen Action Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
        try {&lt;br /&gt;
            // TODO add your handling code here:&lt;br /&gt;
            ftp.close();&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das listview ClickAction Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// List Model Deklarieren&lt;br /&gt;
    	mod = (DefaultListModel) jList1.getModel();&lt;br /&gt;
    	// Prüfen ob der Client noch Verbunden ist &lt;br /&gt;
    	if(ftp.isConnected()==true){&lt;br /&gt;
        	//prüfen ob wir noch eingelogt sind&lt;br /&gt;
        	if(ftp.isLoggedIn()==true){&lt;br /&gt;
            	try {&lt;br /&gt;
                	//Verzeichniss Wechselen&lt;br /&gt;
                	ftp.changeDirectory(jList1.getSelectedValue().toString());&lt;br /&gt;
                	// System giebt aus das das Verzeichniss gewechselt wurde&lt;br /&gt;
                	Cmod.addElement(&amp;quot;Verzeichniss Gewechelt nach: &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	System.out.print(&amp;quot;Verzeichniss Gewechselt nach :&amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	// wir Listen die Files in dem Neune Verzeichniss&lt;br /&gt;
                	Iterator&amp;lt;FtpDirEntry&amp;gt; dirs = ftp.listFiles(ftp.getWorkingDirectory());&lt;br /&gt;
                	// wir Löschen die Alten List items&lt;br /&gt;
                	mod.removeAllElements();&lt;br /&gt;
                	Fmod.removeAllElements();&lt;br /&gt;
                	// Wir Tragen die Verzeichniss ein&lt;br /&gt;
                	while(dirs.hasNext()){&lt;br /&gt;
                    	// wir Deklarieren das Element&lt;br /&gt;
                    	direlement=dirs.next();&lt;br /&gt;
                    	// Wir Prüfen ob das Element ein Verzeichniss ist&lt;br /&gt;
                    	if(direlement.getType()==FtpDirEntry.Type.DIR){&lt;br /&gt;
                        	// wir fügen den Verzeichniss namen in die Liste ein&lt;br /&gt;
                        	mod.addElement(direlement.getName());&lt;br /&gt;
                    	}&lt;br /&gt;
                    	else if(direlement.getType()==FtpDirEntry.Type.FILE){&lt;br /&gt;
                        	Fmod.addElement(direlement.getName());&lt;br /&gt;
                    	}&lt;br /&gt;
                	}&lt;br /&gt;
 &lt;br /&gt;
            	} catch (FtpProtocolException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	} catch (IOException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	}&lt;br /&gt;
        	}&lt;br /&gt;
    	}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== das Multi Download ActionEvent ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Wir Deklarieren den FileChooser&lt;br /&gt;
    	JFileChooser sfd = new JFileChooser();&lt;br /&gt;
    	// Wir schreiben in das Datenfeld Bitte Wählen, da wir nur das Verzeichniss Benötigen&lt;br /&gt;
    	sfd.setSelectedFile(new File(&amp;quot;Bitte Wählen&amp;quot;));&lt;br /&gt;
    	//Wenn Ok Gedrückt Wurde&lt;br /&gt;
    	if(sfd.showSaveDialog(sfd) == JFileChooser.APPROVE_OPTION){&lt;br /&gt;
        	// list erstellen mit Unseren Ausgewählten Daten&lt;br /&gt;
        	Object[] flist = jList2.getSelectedValues();&lt;br /&gt;
        	for(int i = 0; i &amp;lt; flist.length; i++){&lt;br /&gt;
 &lt;br /&gt;
            	try {&lt;br /&gt;
                	// wir geben Aus welche File wir Downloaden möchten&lt;br /&gt;
                	Cmod.addElement(&amp;quot;Get file &amp;quot; + flist[i] + &amp;quot; from Curent Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	System.out.println(&amp;quot;Get file &amp;quot; + flist[i] + &amp;quot; from Curent Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	// neue File Erstellen&lt;br /&gt;
                	File f = new File(sfd.getSelectedFile().getParent() + &amp;quot;/&amp;quot; + flist[i]);&lt;br /&gt;
                	// Output Stream Erstellen&lt;br /&gt;
                	FileOutputStream os = new FileOutputStream(f);&lt;br /&gt;
                	// Datei Herunterladen&lt;br /&gt;
                	ftp.getFile(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; +flist[i], os);&lt;br /&gt;
                	// Server Antwortet auf unsere Anfrage&lt;br /&gt;
                	Cmod.addElement(&amp;quot;Server: &amp;quot; + ftp.getLastResponseString());&lt;br /&gt;
                	System.out.println(&amp;quot;Server: &amp;quot; + ftp.getLastResponseString());&lt;br /&gt;
            	} catch (FileNotFoundException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	} catch (FtpProtocolException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	} catch (IOException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        	}&lt;br /&gt;
        	// Ausgeben Das der Download Beendet wurde&lt;br /&gt;
        	Cmod.addElement(&amp;quot;Download Vorgang Beendet&amp;quot;);&lt;br /&gt;
        	System.out.println(&amp;quot;Download Vorgang Beendet&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Multi Upload Action Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
//Wir erstellen einen Filechooser zum Wählen der Daten&lt;br /&gt;
        JFileChooser ofd = new JFileChooser();&lt;br /&gt;
        //mehrfach auswahl Aktivieren&lt;br /&gt;
        ofd.setMultiSelectionEnabled(true);&lt;br /&gt;
        // Wenn im Filechooser auf Ok geklickt wird&lt;br /&gt;
        if(ofd.showOpenDialog(ofd)==JFileChooser.APPROVE_OPTION){&lt;br /&gt;
            // Wir Erstellen eine Filelist die unsere Gewählten files Beinhaltet&lt;br /&gt;
            File[] flist = ofd.getSelectedFiles();&lt;br /&gt;
            // Wir laden jede Einzelne File hoch&lt;br /&gt;
            for(int i = 0 ; i&amp;lt;flist.length;i++){&lt;br /&gt;
                try {&lt;br /&gt;
                    // hiier Deklarieren wir die File&lt;br /&gt;
                    File f = flist[i];&lt;br /&gt;
                    // Info für Console&lt;br /&gt;
                    Cmod.addElement(&amp;quot;Put File &amp;quot; + f.getName() + &amp;quot; in to &amp;quot; + ftp.getWorkingDirectory() + &amp;quot; directory&amp;quot;);&lt;br /&gt;
                    System.out.println(&amp;quot;Put File &amp;quot; + f.getName() + &amp;quot; in to &amp;quot; + ftp.getWorkingDirectory() + &amp;quot; directory&amp;quot;);&lt;br /&gt;
                    // Wir erstellen einen Fileinputstream zum Auslesen der Datei&lt;br /&gt;
                    FileInputStream is = new FileInputStream(f);&lt;br /&gt;
                    // Nun wird die Datei ochgeladen&lt;br /&gt;
                    ftp.putFile(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + f.getName(), is);&lt;br /&gt;
                    // Console giebt server Nachricht aus&lt;br /&gt;
                    Cmod.addElement(&amp;quot;Server: &amp;quot; +ftp.getLastResponseString());&lt;br /&gt;
                    System.out.println(&amp;quot;Server: &amp;quot; +ftp.getLastResponseString());&lt;br /&gt;
                } catch (FileNotFoundException ex) {&lt;br /&gt;
                    Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
                } catch (FtpProtocolException ex) {&lt;br /&gt;
                    Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
                } catch (IOException ex) {&lt;br /&gt;
                    Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
                }&lt;br /&gt;
 &lt;br /&gt;
            }&lt;br /&gt;
            // Console giebt aus das Übertragung beendet Wurde&lt;br /&gt;
            Cmod.addElement(&amp;quot;Übertragung der Files &amp;quot; + flist.toString() + &amp;quot; Beendet&amp;quot;);&lt;br /&gt;
            System.out.println(&amp;quot;Übertragung der Files &amp;quot; + flist.toString() + &amp;quot; Beendet&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Übergerordneter Ordner Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Elemente Entfernen&lt;br /&gt;
            mod.removeAllElements();&lt;br /&gt;
            Fmod.removeAllElements();&lt;br /&gt;
 &lt;br /&gt;
            // FtpDirEntry Deklarieren&lt;br /&gt;
            FtpDirEntry dir;         &lt;br /&gt;
            // Verzeichniss Wechseln&lt;br /&gt;
            ftp.changeToParentDirectory();       &lt;br /&gt;
            // Neues Verzeichniss in Console Ausgeben&lt;br /&gt;
            Cmod.addElement(&amp;quot;Aktuelles Verzeichniss &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
            // Verzeichnisse in eine FtpDirEntry List hinzufügen&lt;br /&gt;
            Iterator&amp;lt;FtpDirEntry&amp;gt; dirlist = ftp.listFiles(ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
            // Jedes Verzeichniss Ausgeben&lt;br /&gt;
            while(dirlist.hasNext()){&lt;br /&gt;
                // dir elemnt Deklarieren&lt;br /&gt;
                dir=dirlist.next();&lt;br /&gt;
 &lt;br /&gt;
                // ist dir ein Ordner ?&lt;br /&gt;
                if(dir.getType()==FtpDirEntry.Type.DIR){&lt;br /&gt;
                    // wenn ja dan in List 1&lt;br /&gt;
                    mod.addElement(dir.getName());&lt;br /&gt;
                }&lt;br /&gt;
                // Ist dir eine Datei ?&lt;br /&gt;
                if(dir.getType()==FtpDirEntry.Type.FILE){&lt;br /&gt;
                    // wenn ja dan in List 2&lt;br /&gt;
                    Fmod.addElement(dir.getName());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        } catch (FtpProtocolException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Datei Löschen Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
            // TODO add your handling code here:&lt;br /&gt;
 &lt;br /&gt;
            // Wir Schreiben in die Console das Wir die Datei Löschen&lt;br /&gt;
            Cmod.addElement(&amp;quot;Delete File &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + jList2.getSelectedValue().toString());&lt;br /&gt;
            System.out.println(&amp;quot;Delete File &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + jList2.getSelectedValue().toString());&lt;br /&gt;
 &lt;br /&gt;
            // Wir Löschen die Datei&lt;br /&gt;
            ftp.deleteFile(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + jList2.getSelectedValue().toString());&lt;br /&gt;
 &lt;br /&gt;
            // Wir Geben die Server Antwort aus&lt;br /&gt;
            Cmod.addElement(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
            System.out.println(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
 &lt;br /&gt;
        } catch (FtpProtocolException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Verzeichniss Löschen Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
            // TODO add your handling code here:&lt;br /&gt;
                // Wir Schreiben in die Console das Wir das Verzeichniss Löschen&lt;br /&gt;
                Cmod.addElement(&amp;quot;Delete Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                System.out.println(&amp;quot;Delete Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Löschen Das Verzeichniss&lt;br /&gt;
                ftp.removeDirectory(ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Geben die Server Antwort aus&lt;br /&gt;
                Cmod.addElement(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
                System.out.println(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        } catch (FtpProtocolException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Verzeichniss Erstellen Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Deklarieren der Elemente&lt;br /&gt;
        JDialog dia = new JDialog();&lt;br /&gt;
        dia.setSize(375, 110);&lt;br /&gt;
        dia.setLayout(null);&lt;br /&gt;
        dia.setTitle(&amp;quot;Neues Verzeichniss anlegen&amp;quot;);&lt;br /&gt;
        JButton b = new JButton(&amp;quot;Erstellen&amp;quot;);&lt;br /&gt;
        final JTextField textfield = new JTextField();&lt;br /&gt;
 &lt;br /&gt;
        // Platzieren der Elemente&lt;br /&gt;
        textfield.setLocation(25, 25);&lt;br /&gt;
        textfield.setSize(200, 20);&lt;br /&gt;
        b.setLocation(235, 25);&lt;br /&gt;
        b.setSize(100,20);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        // Füge Controls Hinzu&lt;br /&gt;
        dia.add(textfield);&lt;br /&gt;
        dia.add(b);&lt;br /&gt;
        dia.setVisible(true);&lt;br /&gt;
 &lt;br /&gt;
        // Action Listner auf Button Legen&lt;br /&gt;
        b.addActionListener(new ActionListener(){&lt;br /&gt;
        public void actionPerformed(ActionEvent e){&lt;br /&gt;
            try {&lt;br /&gt;
 &lt;br /&gt;
                // Console Giebt aus das wir ein Verzeichniss Erstellen&lt;br /&gt;
                Cmod.addElement(&amp;quot;Create Dir &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + textfield.getText());&lt;br /&gt;
                System.out.println(&amp;quot;Create Dir &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + textfield.getText());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Erstellen das Verzeichniss&lt;br /&gt;
                ftp.makeDirectory(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + textfield.getText());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Geben die System Nachricht aus &lt;br /&gt;
                Cmod.addElement(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
                System.out.println(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
            } catch (FtpProtocolException ex) {&lt;br /&gt;
                Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            } catch (IOException ex) {&lt;br /&gt;
                Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
        }&lt;br /&gt;
        });&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war der Letzte Teil des Toturials. Natürlich Könnte man noch X-Funktionen einfügen aber den Spaß überlasse ich euch. Auf Anfrage sende ich auch gerne Die Sourcecodes Zu, einfach im Forum eine PN an Andy16823.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quellen - Mitwirkende ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.das-java-forum.com/index.php?page=Thread&amp;amp;threadID=14 | Martin] - aus Anderem Forum - hat geholfen&lt;br /&gt;
&lt;br /&gt;
== Änderungen &amp;amp; Hystorie ==&lt;br /&gt;
Ich würde mich freuen wenn man die Bearbeitung kennzeichnet also wie ich &lt;br /&gt;
&lt;br /&gt;
* 17.08.2013 - Bild hinzugefügt - Andy16823&lt;/div&gt;</summary>
		<author><name>Marcinek</name></author>
	</entry>
	<entry>
		<id>https://wiki.byte-welt.net/index.php?title=Ftp-Client_Tutorial&amp;diff=5437</id>
		<title>Ftp-Client Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.byte-welt.net/index.php?title=Ftp-Client_Tutorial&amp;diff=5437"/>
		<updated>2013-08-17T19:36:44Z</updated>

		<summary type="html">&lt;p&gt;Marcinek: /* Java Ftp  Client Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Java Ftp  Client Tutorial =&lt;br /&gt;
Mache mich mal dran ein Ftp Tutorial zu schreiben. In unserem Tutorial erstellen wir einen FTP Server. Wir verwenden für Das Tutorial die mitgelieferte Klasse aus der neusten Java Version. Für dieses Tutorial solltest du die Grundlagen von Java kennen. Auch empfehle ich eine IDE zu benutzen, die über einen Designer verfügt. &lt;br /&gt;
&lt;br /&gt;
== Importe ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
import java.awt.List;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FileInputStream;&lt;br /&gt;
import java.io.FileNotFoundException;&lt;br /&gt;
import java.io.FileOutputStream;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.net.InetAddress;&lt;br /&gt;
import java.net.InetSocketAddress;&lt;br /&gt;
import java.net.SocketAddress;&lt;br /&gt;
import java.net.UnknownHostException;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
import java.util.logging.Level;&lt;br /&gt;
import java.util.logging.Logger;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JCheckBox;&lt;br /&gt;
import javax.swing.JDialog;&lt;br /&gt;
import javax.swing.JFileChooser;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.UIManager;&lt;br /&gt;
import javax.swing.UnsupportedLookAndFeelException;&lt;br /&gt;
import javax.swing.tree.DefaultTreeModel;&lt;br /&gt;
import javax.swing.tree.MutableTreeNode;&lt;br /&gt;
import sun.net.ftp.FtpClient;&lt;br /&gt;
import sun.net.ftp.FtpDirEntry;&lt;br /&gt;
import sun.net.ftp.FtpProtocolException;&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Das Frame ==&lt;br /&gt;
Ich habe bei mir das Frame mit einer IDE Geschrieben die einen Desingner Verwendet, aber erfahrene Java Programmierer Sollten dies&lt;br /&gt;
auch in Wenigen Minuten mit einer IDE die Ohne Designer Arbeitet hinbekommen.&lt;br /&gt;
In dem Bild seht Ihr wie ich das Frame Aufgebaut habe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:Bild22.PNG|mini|hochkant=1.8|Das Frame]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie man Seht befinden sich auf dem Form 3 Listen und ein Menüstrip mit 2 Menüs, 3 textfelder, 1 Passwort Feld und ein Button. Ich habe folgende Listen Modelle den listen zugeordnet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Liste1 (DefaultListModel) mod (diese list zeigt die verzeichnisse an und Verfügt über ein Click ActionEvent&lt;br /&gt;
* Liste2 (DefaultListModel) Fmod (diese liste zeigt die Dateien An, aus dem Aktuellen FTP Verzeichniss.&lt;br /&gt;
* Liste3 (DefaultListModel) Cmod (diese liste dient als Interne Console)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Textfelder Werden folgt Verwendet&lt;br /&gt;
&lt;br /&gt;
* TextFeld1 Hier wird der Server Angegeben&lt;br /&gt;
* Textfeld2 Hier wird der Port Angegeben (Achtung der Port Muss Angegeben werden, bei vielen Servern ist der Standardt Port 21)&lt;br /&gt;
* Textfeld3 Hier Kommt der Benutzername Rein&lt;br /&gt;
* PasswordFeld1 Das Passwort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Menü ist Aufgebaut in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* File&lt;br /&gt;
&lt;br /&gt;
** Verbinden&lt;br /&gt;
** Trenen&lt;br /&gt;
** Daten Uploaden&lt;br /&gt;
** Daten Downloaden&lt;br /&gt;
** Daten Löschen&lt;br /&gt;
** Verzeichniss Löschen&lt;br /&gt;
** Verzeichniss Erstellen&lt;br /&gt;
&lt;br /&gt;
* Edit&lt;br /&gt;
** Übergeordneter Ordner&lt;br /&gt;
&lt;br /&gt;
== Die Codes ==&lt;br /&gt;
&lt;br /&gt;
=== Variabeln in der Klasse ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
//Suchen nach&lt;br /&gt;
public class main extends javax.swing.JFrame {&lt;br /&gt;
//hier diese Einträge Darunter Setzen&lt;br /&gt;
	public DefaultListModel mod;&lt;br /&gt;
	public FtpClient ftp;&lt;br /&gt;
	public FtpDirEntry direlement;&lt;br /&gt;
	public DefaultListModel Fmod;&lt;br /&gt;
	public DefaultListModel Cmod;&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Listen Initialisieren ===&lt;br /&gt;
Ich habe So die Listen Initalisiert&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
public main() {&lt;br /&gt;
initComponents();&lt;br /&gt;
// Hinzufügen&lt;br /&gt;
mod = new DefaultListModel();&lt;br /&gt;
jList1.setModel(mod);&lt;br /&gt;
Fmod = new DefaultListModel();&lt;br /&gt;
jList2.setModel(Fmod);&lt;br /&gt;
Cmod = new DefaultListModel();&lt;br /&gt;
jList3.setModel(Cmod);  &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Verbinden Action Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Elemente aus Modellen Löschen&lt;br /&gt;
        	Fmod.removeAllElements();&lt;br /&gt;
        	mod.removeAllElements();&lt;br /&gt;
        	// deklariren&lt;br /&gt;
        	// Deklarieren des List Models&lt;br /&gt;
        	mod = (DefaultListModel) jList1.getModel();&lt;br /&gt;
        	// holen des Inhaltes aus der Server Text Box&lt;br /&gt;
        	String servUrl=jTextField1.getText();&lt;br /&gt;
        	// holen des Inhaltes aus der Port Text Box&lt;br /&gt;
        	int port=Integer.parseInt(jTextField2.getText());&lt;br /&gt;
        	// Internet Adresse umwandln in IP&lt;br /&gt;
        	String ipAdr = InetAddress.getByName(servUrl).getHostAddress();&lt;br /&gt;
        	// Consolen Anzeige&lt;br /&gt;
        	Cmod.addElement(&amp;quot;Encode Adresse &amp;quot; + servUrl + &amp;quot; in IP Adresse &amp;quot; + ipAdr);&lt;br /&gt;
        	System.out.println(&amp;quot;Endode Addresse in IP: &amp;quot; + ipAdr);   	&lt;br /&gt;
        	// Socket Addresse Deklarieren&lt;br /&gt;
        	SocketAddress sAdr = new InetSocketAddress(ipAdr,port);&lt;br /&gt;
        	// Deklarieren des ftpClients&lt;br /&gt;
        	ftp =  FtpClient.create();&lt;br /&gt;
 &lt;br /&gt;
        	// Benutzername Festelgen&lt;br /&gt;
        	String userName = jTextField3.getText();&lt;br /&gt;
 &lt;br /&gt;
        	//Verbindung Aufbauen&lt;br /&gt;
        	ftp.connect(sAdr);&lt;br /&gt;
        	//Wen Verbindung Besteht, einlogen&lt;br /&gt;
        	if(ftp.isConnected()==true){&lt;br /&gt;
            	// Console giebt aus das wir uns erfolgreich verbunden haben&lt;br /&gt;
            	Cmod.addElement(&amp;quot;Erfolgreich mit Server &amp;quot; + ipAdr + &amp;quot; Verbunden&amp;quot;);&lt;br /&gt;
            	System.out.println(&amp;quot;Erfolgreich mit Server &amp;quot; + ipAdr + &amp;quot; Verbunden&amp;quot;);&lt;br /&gt;
             	// Wir lassen Uns die Begrüßungsnachricht ausgeben&lt;br /&gt;
            	System.out.print(ftp.getWelcomeMsg());&lt;br /&gt;
            	Cmod.addElement(ftp.getWelcomeMsg());&lt;br /&gt;
            	// Hier Loggen wir uns in den Server ein&lt;br /&gt;
            	ftp.login(userName, jPasswordField1.getPassword());&lt;br /&gt;
            	// Wenn wir Eingelogt Sind &lt;br /&gt;
            	if(ftp.isLoggedIn()==true){&lt;br /&gt;
                	// Wir Bekommen eine nachricht vom Server das wir uns Erfolgreich Eingelogt sind&lt;br /&gt;
                	Cmod.addElement(&amp;quot;User &amp;quot; + userName + &amp;quot; Access Garanted&amp;quot;);&lt;br /&gt;
                	System.out.println(&amp;quot;User: &amp;quot; + userName + &amp;quot; ist erfolgreich im Server eingelogt&amp;quot;);&lt;br /&gt;
                	// Nun deklarieren wir unser Aktuelles Verzeichniss&lt;br /&gt;
                	String dir = ftp.getWorkingDirectory();&lt;br /&gt;
                	// Nun lesen wir die Verzeichnisse Aus&lt;br /&gt;
                	Iterator&amp;lt;FtpDirEntry&amp;gt; dirlist = ftp.listFiles(dir);&lt;br /&gt;
                	// Listview Model leeren&lt;br /&gt;
                	mod.removeAllElements();&lt;br /&gt;
                	// hinzufügen der neune Verzeichnisse&lt;br /&gt;
                	while(dirlist.hasNext()){&lt;br /&gt;
                   	// elemnt in die DirEntry hinzufügen&lt;br /&gt;
                   	direlement = dirlist.next();&lt;br /&gt;
                   	// Prüfen ob es ein Verzeichniss ist&lt;br /&gt;
                   	if(direlement.getType()==FtpDirEntry.Type.DIR){&lt;br /&gt;
                       	// in Model Hinzufügen&lt;br /&gt;
                       	mod.addElement(direlement.getName());&lt;br /&gt;
                   	}&lt;br /&gt;
                   	if(direlement.getType()==FtpDirEntry.Type.FILE){&lt;br /&gt;
                       	Fmod.addElement(direlement.getName());&lt;br /&gt;
                   	}&lt;br /&gt;
                	}&lt;br /&gt;
            	}&lt;br /&gt;
        	}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    	} catch (UnknownHostException ex) {&lt;br /&gt;
        	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    	} catch (FtpProtocolException ex) {&lt;br /&gt;
        	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    	} catch (IOException ex) {&lt;br /&gt;
        	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
    	}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Trennen Action Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
        try {&lt;br /&gt;
            // TODO add your handling code here:&lt;br /&gt;
            ftp.close();&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das listview ClickAction Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// List Model Deklarieren&lt;br /&gt;
    	mod = (DefaultListModel) jList1.getModel();&lt;br /&gt;
    	// Prüfen ob der Client noch Verbunden ist &lt;br /&gt;
    	if(ftp.isConnected()==true){&lt;br /&gt;
        	//prüfen ob wir noch eingelogt sind&lt;br /&gt;
        	if(ftp.isLoggedIn()==true){&lt;br /&gt;
            	try {&lt;br /&gt;
                	//Verzeichniss Wechselen&lt;br /&gt;
                	ftp.changeDirectory(jList1.getSelectedValue().toString());&lt;br /&gt;
                	// System giebt aus das das Verzeichniss gewechselt wurde&lt;br /&gt;
                	Cmod.addElement(&amp;quot;Verzeichniss Gewechelt nach: &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	System.out.print(&amp;quot;Verzeichniss Gewechselt nach :&amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	// wir Listen die Files in dem Neune Verzeichniss&lt;br /&gt;
                	Iterator&amp;lt;FtpDirEntry&amp;gt; dirs = ftp.listFiles(ftp.getWorkingDirectory());&lt;br /&gt;
                	// wir Löschen die Alten List items&lt;br /&gt;
                	mod.removeAllElements();&lt;br /&gt;
                	Fmod.removeAllElements();&lt;br /&gt;
                	// Wir Tragen die Verzeichniss ein&lt;br /&gt;
                	while(dirs.hasNext()){&lt;br /&gt;
                    	// wir Deklarieren das Element&lt;br /&gt;
                    	direlement=dirs.next();&lt;br /&gt;
                    	// Wir Prüfen ob das Element ein Verzeichniss ist&lt;br /&gt;
                    	if(direlement.getType()==FtpDirEntry.Type.DIR){&lt;br /&gt;
                        	// wir fügen den Verzeichniss namen in die Liste ein&lt;br /&gt;
                        	mod.addElement(direlement.getName());&lt;br /&gt;
                    	}&lt;br /&gt;
                    	else if(direlement.getType()==FtpDirEntry.Type.FILE){&lt;br /&gt;
                        	Fmod.addElement(direlement.getName());&lt;br /&gt;
                    	}&lt;br /&gt;
                	}&lt;br /&gt;
 &lt;br /&gt;
            	} catch (FtpProtocolException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	} catch (IOException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	}&lt;br /&gt;
        	}&lt;br /&gt;
    	}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== das Multi Download ActionEvent ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Wir Deklarieren den FileChooser&lt;br /&gt;
    	JFileChooser sfd = new JFileChooser();&lt;br /&gt;
    	// Wir schreiben in das Datenfeld Bitte Wählen, da wir nur das Verzeichniss Benötigen&lt;br /&gt;
    	sfd.setSelectedFile(new File(&amp;quot;Bitte Wählen&amp;quot;));&lt;br /&gt;
    	//Wenn Ok Gedrückt Wurde&lt;br /&gt;
    	if(sfd.showSaveDialog(sfd) == JFileChooser.APPROVE_OPTION){&lt;br /&gt;
        	// list erstellen mit Unseren Ausgewählten Daten&lt;br /&gt;
        	Object[] flist = jList2.getSelectedValues();&lt;br /&gt;
        	for(int i = 0; i &amp;lt; flist.length; i++){&lt;br /&gt;
 &lt;br /&gt;
            	try {&lt;br /&gt;
                	// wir geben Aus welche File wir Downloaden möchten&lt;br /&gt;
                	Cmod.addElement(&amp;quot;Get file &amp;quot; + flist[i] + &amp;quot; from Curent Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	System.out.println(&amp;quot;Get file &amp;quot; + flist[i] + &amp;quot; from Curent Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                	// neue File Erstellen&lt;br /&gt;
                	File f = new File(sfd.getSelectedFile().getParent() + &amp;quot;/&amp;quot; + flist[i]);&lt;br /&gt;
                	// Output Stream Erstellen&lt;br /&gt;
                	FileOutputStream os = new FileOutputStream(f);&lt;br /&gt;
                	// Datei Herunterladen&lt;br /&gt;
                	ftp.getFile(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; +flist[i], os);&lt;br /&gt;
                	// Server Antwortet auf unsere Anfrage&lt;br /&gt;
                	Cmod.addElement(&amp;quot;Server: &amp;quot; + ftp.getLastResponseString());&lt;br /&gt;
                	System.out.println(&amp;quot;Server: &amp;quot; + ftp.getLastResponseString());&lt;br /&gt;
            	} catch (FileNotFoundException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	} catch (FtpProtocolException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	} catch (IOException ex) {&lt;br /&gt;
                	Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            	}&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        	}&lt;br /&gt;
        	// Ausgeben Das der Download Beendet wurde&lt;br /&gt;
        	Cmod.addElement(&amp;quot;Download Vorgang Beendet&amp;quot;);&lt;br /&gt;
        	System.out.println(&amp;quot;Download Vorgang Beendet&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Multi Upload Action Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
//Wir erstellen einen Filechooser zum Wählen der Daten&lt;br /&gt;
        JFileChooser ofd = new JFileChooser();&lt;br /&gt;
        //mehrfach auswahl Aktivieren&lt;br /&gt;
        ofd.setMultiSelectionEnabled(true);&lt;br /&gt;
        // Wenn im Filechooser auf Ok geklickt wird&lt;br /&gt;
        if(ofd.showOpenDialog(ofd)==JFileChooser.APPROVE_OPTION){&lt;br /&gt;
            // Wir Erstellen eine Filelist die unsere Gewählten files Beinhaltet&lt;br /&gt;
            File[] flist = ofd.getSelectedFiles();&lt;br /&gt;
            // Wir laden jede Einzelne File hoch&lt;br /&gt;
            for(int i = 0 ; i&amp;lt;flist.length;i++){&lt;br /&gt;
                try {&lt;br /&gt;
                    // hiier Deklarieren wir die File&lt;br /&gt;
                    File f = flist[i];&lt;br /&gt;
                    // Info für Console&lt;br /&gt;
                    Cmod.addElement(&amp;quot;Put File &amp;quot; + f.getName() + &amp;quot; in to &amp;quot; + ftp.getWorkingDirectory() + &amp;quot; directory&amp;quot;);&lt;br /&gt;
                    System.out.println(&amp;quot;Put File &amp;quot; + f.getName() + &amp;quot; in to &amp;quot; + ftp.getWorkingDirectory() + &amp;quot; directory&amp;quot;);&lt;br /&gt;
                    // Wir erstellen einen Fileinputstream zum Auslesen der Datei&lt;br /&gt;
                    FileInputStream is = new FileInputStream(f);&lt;br /&gt;
                    // Nun wird die Datei ochgeladen&lt;br /&gt;
                    ftp.putFile(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + f.getName(), is);&lt;br /&gt;
                    // Console giebt server Nachricht aus&lt;br /&gt;
                    Cmod.addElement(&amp;quot;Server: &amp;quot; +ftp.getLastResponseString());&lt;br /&gt;
                    System.out.println(&amp;quot;Server: &amp;quot; +ftp.getLastResponseString());&lt;br /&gt;
                } catch (FileNotFoundException ex) {&lt;br /&gt;
                    Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
                } catch (FtpProtocolException ex) {&lt;br /&gt;
                    Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
                } catch (IOException ex) {&lt;br /&gt;
                    Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
                }&lt;br /&gt;
 &lt;br /&gt;
            }&lt;br /&gt;
            // Console giebt aus das Übertragung beendet Wurde&lt;br /&gt;
            Cmod.addElement(&amp;quot;Übertragung der Files &amp;quot; + flist.toString() + &amp;quot; Beendet&amp;quot;);&lt;br /&gt;
            System.out.println(&amp;quot;Übertragung der Files &amp;quot; + flist.toString() + &amp;quot; Beendet&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Übergerordneter Ordner Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Elemente Entfernen&lt;br /&gt;
            mod.removeAllElements();&lt;br /&gt;
            Fmod.removeAllElements();&lt;br /&gt;
 &lt;br /&gt;
            // FtpDirEntry Deklarieren&lt;br /&gt;
            FtpDirEntry dir;         &lt;br /&gt;
            // Verzeichniss Wechseln&lt;br /&gt;
            ftp.changeToParentDirectory();       &lt;br /&gt;
            // Neues Verzeichniss in Console Ausgeben&lt;br /&gt;
            Cmod.addElement(&amp;quot;Aktuelles Verzeichniss &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
            // Verzeichnisse in eine FtpDirEntry List hinzufügen&lt;br /&gt;
            Iterator&amp;lt;FtpDirEntry&amp;gt; dirlist = ftp.listFiles(ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
            // Jedes Verzeichniss Ausgeben&lt;br /&gt;
            while(dirlist.hasNext()){&lt;br /&gt;
                // dir elemnt Deklarieren&lt;br /&gt;
                dir=dirlist.next();&lt;br /&gt;
 &lt;br /&gt;
                // ist dir ein Ordner ?&lt;br /&gt;
                if(dir.getType()==FtpDirEntry.Type.DIR){&lt;br /&gt;
                    // wenn ja dan in List 1&lt;br /&gt;
                    mod.addElement(dir.getName());&lt;br /&gt;
                }&lt;br /&gt;
                // Ist dir eine Datei ?&lt;br /&gt;
                if(dir.getType()==FtpDirEntry.Type.FILE){&lt;br /&gt;
                    // wenn ja dan in List 2&lt;br /&gt;
                    Fmod.addElement(dir.getName());&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        } catch (FtpProtocolException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Datei Löschen Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
            // TODO add your handling code here:&lt;br /&gt;
 &lt;br /&gt;
            // Wir Schreiben in die Console das Wir die Datei Löschen&lt;br /&gt;
            Cmod.addElement(&amp;quot;Delete File &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + jList2.getSelectedValue().toString());&lt;br /&gt;
            System.out.println(&amp;quot;Delete File &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + jList2.getSelectedValue().toString());&lt;br /&gt;
 &lt;br /&gt;
            // Wir Löschen die Datei&lt;br /&gt;
            ftp.deleteFile(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + jList2.getSelectedValue().toString());&lt;br /&gt;
 &lt;br /&gt;
            // Wir Geben die Server Antwort aus&lt;br /&gt;
            Cmod.addElement(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
            System.out.println(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
 &lt;br /&gt;
        } catch (FtpProtocolException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Verzeichniss Löschen Event ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
            // TODO add your handling code here:&lt;br /&gt;
                // Wir Schreiben in die Console das Wir das Verzeichniss Löschen&lt;br /&gt;
                Cmod.addElement(&amp;quot;Delete Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
                System.out.println(&amp;quot;Delete Directory &amp;quot; + ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Löschen Das Verzeichniss&lt;br /&gt;
                ftp.removeDirectory(ftp.getWorkingDirectory());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Geben die Server Antwort aus&lt;br /&gt;
                Cmod.addElement(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
                System.out.println(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        } catch (FtpProtocolException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Das Verzeichniss Erstellen Event ===&lt;br /&gt;
&amp;lt;code=java&amp;gt;&lt;br /&gt;
// Deklarieren der Elemente&lt;br /&gt;
        JDialog dia = new JDialog();&lt;br /&gt;
        dia.setSize(375, 110);&lt;br /&gt;
        dia.setLayout(null);&lt;br /&gt;
        dia.setTitle(&amp;quot;Neues Verzeichniss anlegen&amp;quot;);&lt;br /&gt;
        JButton b = new JButton(&amp;quot;Erstellen&amp;quot;);&lt;br /&gt;
        final JTextField textfield = new JTextField();&lt;br /&gt;
 &lt;br /&gt;
        // Platzieren der Elemente&lt;br /&gt;
        textfield.setLocation(25, 25);&lt;br /&gt;
        textfield.setSize(200, 20);&lt;br /&gt;
        b.setLocation(235, 25);&lt;br /&gt;
        b.setSize(100,20);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        // Füge Controls Hinzu&lt;br /&gt;
        dia.add(textfield);&lt;br /&gt;
        dia.add(b);&lt;br /&gt;
        dia.setVisible(true);&lt;br /&gt;
 &lt;br /&gt;
        // Action Listner auf Button Legen&lt;br /&gt;
        b.addActionListener(new ActionListener(){&lt;br /&gt;
        public void actionPerformed(ActionEvent e){&lt;br /&gt;
            try {&lt;br /&gt;
 &lt;br /&gt;
                // Console Giebt aus das wir ein Verzeichniss Erstellen&lt;br /&gt;
                Cmod.addElement(&amp;quot;Create Dir &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + textfield.getText());&lt;br /&gt;
                System.out.println(&amp;quot;Create Dir &amp;quot; + ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + textfield.getText());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Erstellen das Verzeichniss&lt;br /&gt;
                ftp.makeDirectory(ftp.getWorkingDirectory() + &amp;quot;/&amp;quot; + textfield.getText());&lt;br /&gt;
 &lt;br /&gt;
                // Wir Geben die System Nachricht aus &lt;br /&gt;
                Cmod.addElement(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
                System.out.println(&amp;quot;Server: &amp;quot;+ ftp.getLastResponseString());&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
            } catch (FtpProtocolException ex) {&lt;br /&gt;
                Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            } catch (IOException ex) {&lt;br /&gt;
                Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);&lt;br /&gt;
            }&lt;br /&gt;
 &lt;br /&gt;
        }&lt;br /&gt;
        });&lt;br /&gt;
&amp;lt;/code=java&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das war der Letzte Teil des Toturials natürlich Könnte man noch X-Funktionen einfügen aber den Spaß überlasse ich euch. Auf Anfrage Sende ich Auch gerne Die Sourcecodes Zu, einfach im Forum eine PN an Andy16823.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quellen - Mitwirkende ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.das-java-forum.com/index.php?page=Thread&amp;amp;threadID=14 | Martin] - aus Anderem Forum - hat geholfen&lt;br /&gt;
&lt;br /&gt;
== Änderungen &amp;amp; Hystorie ==&lt;br /&gt;
Ich würde mich Freuen wenn man die Bareitung kennzeichnet also wie ich &lt;br /&gt;
&lt;br /&gt;
* 17.08.2013 - Bild Hinzugefügt - Andy16823&lt;/div&gt;</summary>
		<author><name>Marcinek</name></author>
	</entry>
</feed>