So hier hab ich das Problem näher eingrenzen können, ich hoffe diesmal kann mir jemand helfen.
In der folgenden Methode wird ein Vektor befüllt und in ein Array umgewandelt. Das geschieht in einem Servlet.
Der Vektor wurde von mir zuvor mit
initialisiert.
Beim ersten Durchlauf des Servlet stimmt die Ausgabe und die Verarbeitung.
Bei den folgenden Durchläufen gibt es ein Problem, der Vector vektor scheint irgendwo im Speicher zu hängen, denn die neuen Ausgaben zeigen die alten Ergebnisse, erweitert um die Neuen, die in der Methode streamLesen hinzugefügt wurden.
Was kann ich da tun?
Ich bin für jeden Hinweis dankbar, auch wenn er noch so klein ist!
In der folgenden Methode wird ein Vektor befüllt und in ein Array umgewandelt. Das geschieht in einem Servlet.
Der Vektor wurde von mir zuvor mit
Code:
private Vector vektor =new Vector(100);
Beim ersten Durchlauf des Servlet stimmt die Ausgabe und die Verarbeitung.
Bei den folgenden Durchläufen gibt es ein Problem, der Vector vektor scheint irgendwo im Speicher zu hängen, denn die neuen Ausgaben zeigen die alten Ergebnisse, erweitert um die Neuen, die in der Methode streamLesen hinzugefügt wurden.
Was kann ich da tun?
Ich bin für jeden Hinweis dankbar, auch wenn er noch so klein ist!
Code:
public void streamLesen(
BufferedReader file,
String datei,
HttpServletRequest request)
{
try
{
String ausgabe = "";
String zeile;
String ziffern;
String[] zeilen;
int count = 1;
//Ausgabe in der Konsole
System.out.println(datei);
//Schleife, die die Datei Zeilenweise erfasst
while ((zeile = file.readLine()) != null)
{
int schleife = zeile.indexOf("rb.getString(");
int anfang = 0;
int temp = 0;
//Schleife, die die Zeilen durchsucht
while (schleife >= 0)
{
if (temp == 0)
{
temp = schleife;
}
int beginn = zeile.indexOf("rb.getString(", temp);
temp = beginn + 1;
if (beginn >= 0)
{
anfang = zeile.indexOf("\"", beginn);
} else
{
schleife = -1;
}
int ende = anfang + 5;
//Auslesen der gewünschten Informationen
if (ende >= beginn)
{
if (beginn >= 0)
{
ende = zeile.indexOf("\")", beginn);
ziffern = zeile.substring(anfang + 1, ende);
Integer Iziffern =
new Integer(Integer.parseInt(ziffern));
int pos;
//Ausgabe in der Konsole
ausgabe = ziffern + " " + datei;
//Befüllt den Vektor mit den Werten aus der Datei
//inklusive der richtigen Dateinamen
if ((pos = vektor.indexOf(Iziffern)) >= 0)
{
Object obj = vektor.get(pos + 1);
String wert = obj.toString();
if (wert.indexOf(datei) < 0)
{
Object object = vektor.get(pos + 1);
String einfueg =
datei + ", " + object.toString();
vektor.set(pos + 1, einfueg);
}
} else
{
vektor.add(Iziffern);
vektor.add(datei);
}
//Ausgabe in der Konsole
System.out.println(ausgabe);
}
}
}
count++;
}
String[] zuHtml = erstellArray(vektor);
request.setAttribute("zuHtml", zuHtml);
} catch (Exception e)
{
System.out.println("Fehler in Methode StreamLesen");
}
}
public String[] erstellArray(Vector vektor)
{
System.out.println("Vektorinhalt: " + vektor.toString());
Vector neu = new Vector(100);
ungenutzt = new Vector(100);
String temp1 = "", temp2 = "", satz = "";
for (int i = 0; i < vektor.size(); i++)
{
//Holt sich die Ziffernfolge aus dem Vektor
Object obj1 = vektor.get(i);
temp1 = obj1.toString();
i++;
//Macht die Ziffernfolgen wieder 4-stellig
for (int j = 0; j < temp1.length(); j++)
{
if (temp1.length() < 4)
{
temp1 = "0" + temp1;
}
}
//Holt sich die Dateinamen aus dem Vektor
Object obj2 = vektor.get(i);
temp2 = obj2.toString();
temp1.trim();
temp2.trim();
satz = temp1 + " " + temp2;
neu.add(satz);
ungenutzt.add(obj1);
}
int kapazitaet = neu.size();
//Sortiert den Vektor
Collections.sort(neu);
Collections.sort(ungenutzt);
String[] vektorInhalt = new String[kapazitaet];
for (int i = 0; i < vektorInhalt.length; i++)
{
vektorInhalt[i] = neu.get(i).toString();
}
return vektorInhalt;
}