# Array leeren



## bernd (21. Sep 2004)

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

/**
  *
  * Beschreibung.
  *
  * @version 1.0 vom 17.09.2004
  * @author
  */

public class Guard1 extends JFrame {
  // Anfang Variablen
  private JLabel jlbstart = new JLabel();
  final static JTextField jtfstart = new JTextField();
  private JButton jbustart = new JButton();
  private JButton jbuziel = new JButton();
  private JTextField jtfziel = new JTextField();
  private JFileChooser jfco1 = new JFileChooser();
  String sFileChoosed;
  String str1 = ("\\");
  private JFileChooser jfco2 = new JFileChooser();
  final static JTextArea jtastart = new JTextArea("", 1, 1);
  final static StringBuffer ret = new StringBuffer();

  private JScrollPane jspstart = new JScrollPane();
// Ende Variablen

  public Guard1(final String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(final WindowEvent evt) { System.exit(0); } });
    setBounds(50, 80, 600, 450);
    Container cp = getContentPane();
    cp.setLayout(null);

    // Anfang Komponenten
    jtfstart.setText("kein Pfad ausgewählt");
    jtfstart.setBackground(Color.red);
    jtfstart.setEditable(false);
    jtfstart.setToolTipText("Pfad zum Quellordner");
    jtfstart.setBounds(5, 45, 580, 20);
    getContentPane().add(jtfstart);
    
    jbustart.setIcon(new ImageIcon(Guard1.class.getResource("start.gif")));
    jbustart.setToolTipText("Quellordner auswählen");
    jbustart.setBounds(5, 10, 35, 35);
    getContentPane().add(jbustart, BorderLayout.CENTER);
    jbustart.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbustartActionPerformed(evt); } });

    jbuziel.setIcon(new ImageIcon(Guard1.class.getResource("start.gif")));
    jbuziel.setToolTipText("Zielordner auswählen");
    jbuziel.setBounds(5, 75, 35, 35);
    getContentPane().add(jbuziel, BorderLayout.CENTER);
    jbuziel.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbuzielActionPerformed(evt); } });

    jtfziel.setText("kein Pfad ausgewählt");
    jtfziel.setBackground(Color.green);
    jtfziel.setEditable(false);
    jtfziel.setToolTipText("Pfad zum Zielordner");
    jtfziel.setBounds(5, 110, 580, 20);
    getContentPane().add(jtfziel, BorderLayout.CENTER);

    jtastart.setBackground(Color.red);
    jtastart.setEditable(false);
    jtastart.setToolTipText("Inhalt Quellordner");
    jtastart.setBounds(5, 140, 180, 250);
    getContentPane().add(jtastart, BorderLayout.CENTER);

    jspstart.setViewportView(jtastart);
    jspstart.setBounds(5, 140, 180, 250);
    getContentPane().add(jspstart, BorderLayout.CENTER);
// Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren
    public void jbustartActionPerformed(final ActionEvent evt) {
     jfco1.setDialogTitle("Ordner auswählen");
     jfco1.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // um nur Verzeichnisse auszuwählen
    if (jfco1.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
      String sFileChoosed = jfco1.getSelectedFile().getName();
      jtfstart.setText(jfco1.getCurrentDirectory() + str1 + sFileChoosed);

      File f = new File(jtfstart.getText());
      File[] files = f.listFiles();
      for (int i = 0; i < files.length; i++) {
          //if (files[i].isFile()) {
             ret.append(files[i].getName() + '\n');
           // }
           }
     jtastart.setText(ret.toString());
    }
  }
  public void jbuzielActionPerformed(final ActionEvent evt) {

  }

// Ende Ereignisprozeduren

  public static void main(final String[] args) {
    new Guard1("Guard1");

  }
}
```

Hallo im obrigen Prog. kann ich Ordner auswählen, deren Inhalt dann in einem
TextArea angezeigt werden. Problem jedesmal wenn ich einen neuen Ordner auswähle
wird der Inhalt immer an den des letzten angehängt. Will ich aber nicht.
Muss ich das Array auf null setzen oder was macht man da am besten? JTextArea.setText("");
funktionierte auch nicht.
 :?:


----------



## meez (21. Sep 2004)

StringBuffer leeren, vor der for Schleife...
So: 

```
ret.delete(0, ret.length());
```


----------



## bernd (21. Sep 2004)

Klasse, vielen dank!


----------



## foobar (21. Sep 2004)

Am besten deklarierst du den Stringbuffer erst in der Methode  jbustartActionPerformed. Dann wird bei jedem Aufruf ein neuer Stringbuffer angelegt, der nur in dieser Methode sichtbar ist.


```
public void jbustartActionPerformed(final ActionEvent evt) {
    StringBufer ret = new StringBuffer();
     jfco1.setDialogTitle("Ordner auswählen");
     jfco1.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // um nur Verzeichnisse auszuwählen
    if (jfco1.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
      String sFileChoosed = jfco1.getSelectedFile().getName();
      jtfstart.setText(jfco1.getCurrentDirectory() + str1 + sFileChoosed);

      File f = new File(jtfstart.getText());
      File[] files = f.listFiles();
      for (int i = 0; i < files.length; i++) {
          //if (files[i].isFile()) {
             ret.append(files[i].getName() + '\n');
           // }
           }
     jtastart.setText(ret.toString());
    }
  }
```
Die Membervariable 

```
final static StringBuffer ret = new StringBuffer();
```
mußt du dann selbstverständlich entfernen.


----------



## bernd (21. Sep 2004)

Danke!
Ach noch was, kann man zwei StringBuffer auch mit equals miteinander vergleichen?
Wenn ja, gibt es auch ne möglichkeit die unterschiede beider auszulisten?


----------



## bernd (21. Sep 2004)

Frage StringBuffer miteinender vergleichen hat sich erledigt!
Aber eine Möglichkeit die Unterschiede aufzulisten hab ich nicht gefunden!


----------



## foobar (21. Sep 2004)

Also ein Methode mit der man die Unterschiede zweier Stingbuffer auflisten kann, ist mir nicht bekannt. Ich würde das so lösen:

```
StringBuffer b1 = new StringBuffer("aaa");
StringBuffer b2 = new StringBuffer("aba");
		
for (int i = 0; i < b1.length(); i++)
{
	if (b1.charAt(i) != b2.charAt(i))
	{
		System.out.println("error b1 =" +b1.charAt(i) + " b2 = " + b2.charAt(i) );
	}
}
```


----------



## bernd (22. Sep 2004)

Super, ich denke damit kann ich was anfangen!
Gruß Bernd.


----------



## bernd (22. Sep 2004)

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

/**
  *
  * Beschreibung.
  *
  * @version 1.0 vom 17.09.2004
  * @author
  */

public class Guard1 extends JFrame {
  // Anfang Variablen
  private JLabel jlbstart = new JLabel();
  final static JTextField jtfstart = new JTextField();
  private JButton jbustart = new JButton();
  private JButton jbuziel = new JButton();
  private JTextField jtfziel = new JTextField();
  private JFileChooser jfco1 = new JFileChooser();
  String sFileChoosed;
  String str1 = ("\\");
  final static JTextArea jtastart = new JTextArea("", 1, 1);
  final static StringBuffer ret = new StringBuffer();
  private JScrollPane jspstart = new JScrollPane();
  private JFileChooser jfco2 = new JFileChooser();
  private JTextArea jtaziel = new JTextArea("", 1, 1);
  final static StringBuffer ret1 = new StringBuffer();
  private JScrollPane jsp1 = new JScrollPane();
  private JButton jbuscan = new JButton();
  private JButton jbustop = new JButton();
// Ende Variablen

  public Guard1(final String title) {
    // Frame-Initialisierung
    super("Scan - Dialog");
    addWindowListener(new WindowAdapter() {
      public void windowClosing(final WindowEvent evt) { System.exit(0); } });
    setBounds(50, 80, 600, 450);
    Container cp = getContentPane();
    cp.setLayout(null);

    // Anfang Komponenten
    jtfstart.setText("kein Pfad ausgewählt");
    jtfstart.setBackground(Color.red);
    jtfstart.setEditable(false);
    jtfstart.setToolTipText("Pfad zum Quellordner");
    jtfstart.setBounds(5, 45, 580, 20);
    getContentPane().add(jtfstart);
    
    jbustart.setIcon(new ImageIcon(Guard1.class.getResource("start.gif")));
    jbustart.setToolTipText("Quellordner auswählen");
    jbustart.setBounds(5, 10, 35, 35);
    getContentPane().add(jbustart, BorderLayout.CENTER);
    jbustart.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbustartActionPerformed(evt); } });

    jbuziel.setIcon(new ImageIcon(Guard1.class.getResource("start.gif")));
    jbuziel.setToolTipText("Zielordner auswählen");
    jbuziel.setBounds(5, 75, 35, 35);
    getContentPane().add(jbuziel, BorderLayout.CENTER);
    jbuziel.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbuzielActionPerformed(evt); } });

    jtfziel.setText("kein Pfad ausgewählt");
    jtfziel.setBackground(Color.green);
    jtfziel.setEditable(false);
    jtfziel.setToolTipText("Pfad zum Zielordner");
    jtfziel.setBounds(5, 110, 580, 20);
    getContentPane().add(jtfziel, BorderLayout.CENTER);

    jtastart.setBackground(Color.red);
    jtastart.setEditable(false);
    jtastart.setToolTipText("Inhalt Quellordner");
    jtastart.setBounds(5, 140, 180, 250);
    getContentPane().add(jtastart, BorderLayout.CENTER);

    jspstart.setViewportView(jtastart);
    jspstart.setBounds(5, 140, 180, 250);
    getContentPane().add(jspstart, BorderLayout.CENTER);

    jtaziel.setText("");
    jtaziel.setBackground(Color.green);
    jtaziel.setEditable(false);
    jtaziel.setToolTipText("Inhalt Zielordner");
    jtaziel.setBounds(210, 140, 180, 250);
    getContentPane().add(jtaziel, BorderLayout.CENTER);
    
    jsp1.setViewportView(jtaziel);
    jsp1.setBounds(210, 140, 180, 250);
    getContentPane().add(jsp1, BorderLayout.CENTER);
    
    jbuscan.setText("scan starten");
    jbuscan.setBackground(Color.blue);
    jbuscan.setToolTipText("startet die Überwachung");
    jbuscan.setBounds(450, 325, 120, 30);
    getContentPane().add(jbuscan, BorderLayout.CENTER);
    jbuscan.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbuscanActionPerformed(evt); } });

    jbustop.setText("scan stoppen");
    jbustop.setBackground(Color.magenta);
    jbustop.setToolTipText("beendet die Überwachung");
    jbustop.setBounds(450, 360, 120, 30);
    getContentPane().add(jbustop, BorderLayout.CENTER);
    jbustop.addActionListener(new ActionListener() {
      public void actionPerformed(final ActionEvent evt) {
        jbustopActionPerformed(evt); } });

// Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren
    public void jbustartActionPerformed(final ActionEvent evt) {
     jfco1.setDialogTitle("Ordner auswählen");
     jfco1.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // um nur Verzeichnisse auszuwählen
    if (jfco1.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
      String sFileChoosed = jfco1.getSelectedFile().getName();
      jtfstart.setText(jfco1.getCurrentDirectory() + str1 + sFileChoosed);

      File f = new File(jtfstart.getText());
      File[] files = f.listFiles();
      ret.delete(0, ret.length()); // StringBuffer ret leeren
      for (int i = 0; i < files.length; i++) {
          //if (files[i].isFile()) {
             ret.append(files[i].getName() + '\n');
           // }
         }
     jtastart.setText(ret.toString());
    }
  }
  public void jbuzielActionPerformed(final ActionEvent evt) {
     jfco2.setDialogTitle("Ordner auswählen");
     jfco2.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    if (jfco2.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
      String sFileChoosed = jfco2.getSelectedFile().getName();
      jtfziel.setText(jfco2.getCurrentDirectory() + str1 + sFileChoosed);
      
      File f1 = new File(jtfziel.getText());
      File[] files1 = f1.listFiles();
      ret1.delete(0, ret1.length()); // StringBuffer ret1 leeren
      for (int i1 = 0; i1 < files1.length; i1++) {
          //if (files[i1].isFile()) {
             ret1.append(files1[i1].getName() + '\n');
           // }
         }
     jtaziel.setText(ret1.toString());

    }
  }

  public void jbuscanActionPerformed(final ActionEvent evt) {
         for (int i = 0; i < ret.length(); i++)
{
   if (ret.charAt(i) != ret1.charAt(i))
   {
      System.out.println("error b1 =" +ret.charAt(i) + " b2 = " + ret1.charAt(i) );
   }
}

  }
  public void jbustopActionPerformed(final ActionEvent evt) {

  }
// Ende Ereignisprozeduren

  public static void main(final String[] args) {
    new Guard1("Guard1");

  }
}
```

Bei mir sieht das so aus!
Hab den Code einfach mal gepostet, um es etwas zu verdeutlichen was ich vor habe!


----------

