Vector verliert Daten beim Rücksprung im Konstruktor

Status
Nicht offen für weitere Antworten.

metacube

Neues Mitglied
hallo Zusammen
ich bin ein C auf Java umsteiger und neu hier.

. Ich schreibe gerade ein Programm das ein Ordner überwacht und Neueinträge oder gelöschte Files anzeigt.

Jetzt habe ich das Problem das der Vector folderOnFilelistIndex und folderOndiskIndex beim Rücksprung wieder auf NULL steht. gleichzeitig könnt ihr vieleicht noch eine Inspiration geben, ob einige Methoden noch schöner mit OOP zu lösen sind


Code:
import java.io.IOException;
import java.util.Vector;

import javax.swing.JFrame;

public class Manager {

	Manager() {
	}
	public static void main(String[] args) throws IOException {
		
	FolderControll fm= new FolderControll("C:\\diff\\","c:\\index.dat");// analyse folder    compare file //$NON-NLS-2$
//		Gui graf=new Gui();
//		
//		graf.display(fm.getrightTree(),fm.getrightTree());
		System.out.println("gespeicherte folder (voriger zustand) "+fm.getleftTree());
		
		System.out.println("aktueller daten im folder (neu) "+fm.getrightTree());
		
	//	fm.displayFolderDifferenz();
		
	}
}


import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Vector;

public class FolderControll {

	// speichert die gefundenen Dateienlisten in einer Datei
	// oder holt sie von der Datei
	// kurz -> file io
	// Anfang Variablen
	private String location = "";
	private String filename = "";
	private File[] fy;
	RandomAccessFile rFile = null;
	public Vector folderOnFilelistIndex = new Vector() ;
	private Vector folderOndiskIndex = new Vector();
	
	
	FolderControll(String location, String fina) throws IOException {
		
		this.setlocation(location);
		this.setFilename(fina);
		this.getLeftFolderfrmDisk(); // RETURN INDEX frm FILE		
		this.storeIndexToFile(fina, this.scanFolderStructure(0));
		this.scanFolderStructure(0); // RET Index LIVE
		System.out.println("Folderkontroller bereit...");
	}

	// lesen des Folders on disk
	
	
	
	public void setlocation(String loc) {
		location = loc;
	}

	public String getFilename() {
		return filename;
	}

	public void setFilename(String filename) {
		this.filename = filename;
	}

	public Vector getleftTree() {
		return folderOnFilelistIndex;
	}

	public Vector getrightTree() {
		return folderOndiskIndex;
	}

	

	
	
	
	private Vector scanFolderStructure(int foldchk) {
		int x = 0;
		// dname.createNewFile(); // falls das file nicht existiert erstellen.
		File dname = new File(location);
		fy = dname.listFiles();
		while (x < fy.length - 1) {
			x++;
			if (foldchk == 0) {
				if (fy[x].isDirectory())
					folderOndiskIndex.addElement("Ordner "
							+ fy[x].toString().trim());
				else
					folderOndiskIndex.addElement(this.fy[x].toString().trim());
			} else {
				folderOndiskIndex.addElement(fy[x].toString().trim());
			}
		}
		return folderOndiskIndex;
	}

	// speichern vom file(ordnerstrukt)

	private void storeIndexToFile(String filen, Vector fn) throws IOException {
		int z = 0;

		// dname = new File(db_loc);
		rFile = new RandomAccessFile(filename, "rw");			
		while (z < fn.size() - 1) {
			z++;
			this.rFile.seek(rFile.length());
			if ((fn.elementAt(z).toString().length() < 2 || fn.elementAt(z) == null)) {
				rFile.writeChars(System.getProperty("line.separator"));
			} else {
				rFile.writeBytes(fn.elementAt(z).toString() + '\13');
			}
		}
	}

	// laden vom file(ordnerstrukt)

	private void getLeftFolderfrmDisk() throws IOException {

		Vector folderOnFilelistIndex;
		folderOnFilelistIndex = new Vector();
		String line;

		if (new File(filename).exists() != true) {
			this.storeIndexToFile(filename, scanFolderStructure(0));
			this.folderOndiskIndex.clear();
			this.folderOnFilelistIndex.clear();
		}
			RandomAccessFile f;
			f = new RandomAccessFile(filename, "r");
			while ((line = f.readLine()) != null)
			{
				folderOnFilelistIndex.addElement(line);
			}
			f.close();
			// File or directory exists
		// return folderOnFilelistIndex;
	}

	public void displayFolderDifferenz() throws IOException {
		FolderComperator l = new FolderComperator(getleftTree(),getrightTree());//		
		l.compareFileList();
	}

}

[code]
import java.util.Vector;

public class FolderComperator {

private Vector leftData = new Vector();
private Vector rightData = new Vector();
private Vector geloescht = new Vector();
private Vector neufolder = new Vector();

FolderComperator(Vector leftData, Vector rightData)
{
this.leftData = leftData;
this.rightData = rightData;
}

private String findFolder(Vector ff, String foName) {
int rc;
String resi = "";
for (rc = 0; rc < ff.size(); rc++) {
if (foName == ff.elementAt(rc)) {
resi = foName;
break;
}
}
return resi;
}

public void compareFileList() {

Vector leftDa = leftData;
Vector rightDa = rightData;
// fileIndexToLoad.contains(elem)
int rc;
int lc;
String gefOrdner;
// Vector altDeletedEntry = leftData;//

for (lc = 0; lc <= rightDa.size() - 1; lc++) {
gefOrdner = findFolder(rightDa, leftDa.elementAt(lc).toString());
if (leftDa.elementAt(lc) == gefOrdner)
;//System.out.println("no chances"); // ordner immernoch da
else
//if (leftDa.elementAt(lc)!=findFolder(rightDa,leftDa.elementAt(lc).toString()))// add gelöschter ordner und neu an position
{
this.geloescht.add(leftDa.elementAt(lc));
System.out.println("geloeschter Ordner " + leftDa.elementAt(lc));
}
}
for (rc = 0; rc <= rightDa.size() - 1; rc++) {
if (rightDa.elementAt(rc) == findFolder(leftDa, rightDa.elementAt(
rc).toString()))
;// System.out.print("nc"); // ordner immernoch da
else
{
this.neufolder.add(rightDa.elementAt(rc));
System.out.println("neuer Ordner " + rightDa.elementAt(rc));
}
}
}
}
[/code]

für eure Hild wäre ich dankbar
 

benders

Aktives Mitglied
Moin,

ich habe mir die Methode scanFolderStructure angeguckt.

Das Programm läuft garnicht in die while-Schleife!

X ist 0 und fy.length-1 ist auch 0, da nur C:/diff gefunden wurde.

So sieht meine Fkt. aus:


Code:
 private Vector scanFolderStructure(int foldchk) { 
      int x = 0; 
      // dname.createNewFile(); // falls das file nicht existiert erstellen. 
      File dname = new File(location); 
      fy = dname.listFiles(); 
      while (x <= fy.length-1) { //// ACHTUNG <= 
         if (foldchk == 0) { 
            if (fy[x].isDirectory()) {
               folderOndiskIndex.addElement("Ordner " 
                     + fy[x].toString().trim()); 
            }
            else 
               folderOndiskIndex.addElement(this.fy[x].toString().trim()); 
         } else { 
            folderOndiskIndex.addElement(fy[x].toString().trim()); 
         } 
         x++; ///// Achtung an das Ende die Schelife gestetzt
      } 
      System.out.println("Anzahl:"+folderOndiskIndex.size());
      return folderOndiskIndex; 
   }

Bernd Enders
 

Ntakzugul

Mitglied
genau das :)

hier noch ein paar kleine Verbesserungen

Code:
   private Vector scanFolderStructure(boolean checkFolder) {  // Warum einen int benutzen, wenn du hier einen boolean verwenden kannst
      int x = 0; 
      // dname.createNewFile(); // falls das file nicht existiert erstellen. 
      File dname = new File(location); 
      fy = dname.listFiles(); 
      int dirSize = fy.length;
      while (x < dirSize) { //// ACHTUNG <= 

         // da beide else-Zweige das selbe gemacht haben, einfach beide Bedingung zusammen ziehen. && bewirkt hier, 
         // dass der nachfolgende Ausdruck nur bewertet wird, falls der vorhergehende wahr ist
         // den else-Zweig selbst kannst du dir hier dann auch direkt schenken, da du im Prinzip bei beiden Zweigen 
         // die gleiche Operation ausführst und nur ein "Ordner " davor schreibst.

         String fileOrFolderName  = fy[x].toString().trim();
         if (checkFolder && fy[x].isDirectory()) { 
           fileOrFolderName = "Ordner " + fileOrFolderName;
         }
         folderOndiskIndex.addElement(fileOrFolderName); 
         x++; ///// Achtung an das Ende die Schelife gestetzt
      } 
      System.out.println("Anzahl:"+folderOndiskIndex.size());
      return folderOndiskIndex; 
   }


Allgemein solltest du dir, imho, angewöhnen, sprechende Namen zu benutzen :) ... fy ist etwas nichts sagend *G* .. und "getter"-Ketten
Code:
fn.elementAt(z).toString().length()
sind, meiner Meinung nach, auch etwas unschön und grade beim Debuggen/Fehlermeldungen störend bzw. hinderlich ...

Noch was, was mir aufgefallen ist? .. *grübel* .. achja ... wenn du Schleifen benutzt, die über ein Array o.Ä. laufen, solltest du die Größe des Arrays vorher auslesen und nicht jedesmal die size oder length Methode aufrufen. Ist zum einen bei der Fehlersuche schöner, zum anderen vereinfacht es das lesen und das Debuggen meiner Erfahrung nach ...

Grüße

Ntak
 

benders

Aktives Mitglied
Wenn Du Java5 oder höher einstetz, solltest Du auch den Typ der Vector-Elemente angeben.
Stichwort Generics.

Vector<String> = new Vector<String>();
 

metacube

Neues Mitglied
viele Danke für eure Hilfe. geht ja richtig schnell hier :)
Das Problem konnte ich lösen und hab den Code nach euren Empfehlungen angepasst.

in der Methode getLeftFolderfrmDisk() wurde am Anfang
das Objekt mit folderOnFilelistIndex = new Vector();
nochmals neu erzeugt und somit die alte Instanz überschrieben. Jetzt wird die Objektliste sauber übergeben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Mein Warenkorb JavaBean - Vector verliert die Waren Java Basics - Anfänger-Themen 8
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
P Array in Vector speichern Java Basics - Anfänger-Themen 2
E Methoden new Vector().add(x).add(x); ? Java Basics - Anfänger-Themen 5
F Vector istGeordnet Java Basics - Anfänger-Themen 15
R Vector-Filterfunktion Java Basics - Anfänger-Themen 4
Todesbote Map (Key=String; Value = Vector) Value/Vector sortieren Java Basics - Anfänger-Themen 13
J Vector Manipulieren.. Wie? Java Basics - Anfänger-Themen 16
M Vector eines Vectors einzeln ausgeben Java Basics - Anfänger-Themen 9
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
H Zugriff auf Vector Element Java Basics - Anfänger-Themen 2
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
A Author in Vector Java Basics - Anfänger-Themen 22
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
K Collections Vector zu String casten Java Basics - Anfänger-Themen 4
U Wozu dient ein Vector in Java? Java Basics - Anfänger-Themen 6
S Vector mit beliebigen Klassen an Funktion übergeben Java Basics - Anfänger-Themen 20
B Globale vector? Java Basics - Anfänger-Themen 7
E 2 Dimensionaler Vector Java Basics - Anfänger-Themen 5
T Map<String, Vector>? Java Basics - Anfänger-Themen 11
P Collections Vector füllen in for-Schleife Java Basics - Anfänger-Themen 3
J Vector Addition Java Basics - Anfänger-Themen 5
M 2D Vector Java Basics - Anfänger-Themen 2
N IndexOutOfBoundsException: Source does not fit in dest beim Kopieren von ArrayList in Vector Java Basics - Anfänger-Themen 4
M Umwandlung von Array in Vector und umgekehrt Java Basics - Anfänger-Themen 6
E Datentypen Klasse Vector aus der Standard-API anwenden Java Basics - Anfänger-Themen 7
D Klasse Vector entwerfen Java Basics - Anfänger-Themen 7
A Arrays vs Liste vs Vector Java Basics - Anfänger-Themen 30
H in for Schleife über Vector iterieren Java Basics - Anfänger-Themen 2
S Datentypen Vector auslesen Java Basics - Anfänger-Themen 12
yampi Objektsammlung - Hashtable, Vector, Arrays Java Basics - Anfänger-Themen 8
T Vector-Positin anzeigen Java Basics - Anfänger-Themen 3
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
C Vector<Object> Probleme Java Basics - Anfänger-Themen 38
C Datentypen Probleme mit Vector.contains() Java Basics - Anfänger-Themen 10
M Datentypen function(Vector<SuperClass>), Vector<Subclass> Java Basics - Anfänger-Themen 6
L Vector Sortieren Java Basics - Anfänger-Themen 8
B Vector in Table ersetzen Java Basics - Anfänger-Themen 4
B Werte einer Spalte aus DB in einen Vector schreiben Java Basics - Anfänger-Themen 15
kitz Telefonbuch (Vector) Java Basics - Anfänger-Themen 17
E Arraylist mit Daten aus Vector füllen Java Basics - Anfänger-Themen 7
S Vector -> String JComboBox Java Basics - Anfänger-Themen 11
F Vector wird überschrieben Java Basics - Anfänger-Themen 8
T Vector sortiern Java Basics - Anfänger-Themen 7
C Frage zu Vector und muliplizieren des Inhaltes Java Basics - Anfänger-Themen 2
S Vector von eigenen Klassen Java Basics - Anfänger-Themen 2
J Collection Vector Java Basics - Anfänger-Themen 8
Streeber ArrayList/Vector, mehrdimensional Java Basics - Anfänger-Themen 11
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
babel Einen Vector/Liste mit Daten prüfen Java Basics - Anfänger-Themen 31
B Hilfe zum einem Problem mit Vector Java Basics - Anfänger-Themen 8
H Vector - Fehler? Java Basics - Anfänger-Themen 2
babel einen Vector nach Datum sortieren Java Basics - Anfänger-Themen 21
T Array-Vector Problem Java Basics - Anfänger-Themen 18
P Vector und Exception Java Basics - Anfänger-Themen 7
K Vector Java Basics - Anfänger-Themen 3
K Vector Java Basics - Anfänger-Themen 10
babel ein Vector mit verschiedenen Werten auslesen und berechnen Java Basics - Anfänger-Themen 34
T Object aus Vector übergeben Java Basics - Anfänger-Themen 2
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
L Vector einem Array hinzufügen Java Basics - Anfänger-Themen 14
P Vector mit double Java Basics - Anfänger-Themen 3
P Vector Elemente auslesen Java Basics - Anfänger-Themen 9
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
W Vector mit String[] auslesen Java Basics - Anfänger-Themen 4
Povlsen84 Initlialisierung, Vector, serialVersionUID . kleine Fragen Java Basics - Anfänger-Themen 4
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
B Dopplete aus Vector entfernen Java Basics - Anfänger-Themen 8
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
K Vector zu Array machen Java Basics - Anfänger-Themen 10
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
L Multidimensional Vector - Recordset Java Basics - Anfänger-Themen 5
K Objektklasse mit leerem Vector füllen Java Basics - Anfänger-Themen 6
K Vector wird überschrieben Java Basics - Anfänger-Themen 7
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
K vector cannot be resolved Java Basics - Anfänger-Themen 3
G Zeichenkette suchen in Vector-Klasse Java Basics - Anfänger-Themen 11
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
M ObjectInputStream, Object und Vector<Object> Java Basics - Anfänger-Themen 4
G Vector, equal & Casts Java Basics - Anfänger-Themen 5
N Objekte in einen Vector packen oder nicht? Java Basics - Anfänger-Themen 3
D Frage zu Vector Java Basics - Anfänger-Themen 7
S Problem mit Vector Java Basics - Anfänger-Themen 2
G Object[] [] nach vector casten. Java Basics - Anfänger-Themen 3
G 2D vector zugriff auf elementinterne elemente wie Java Basics - Anfänger-Themen 3
G vector in neuem vector sortieren Java Basics - Anfänger-Themen 3
G jede 2te zeile in vector leer einfügen, wie? Java Basics - Anfänger-Themen 4
G vector füllt sich immer weiter. wo muss ich ihn leeren? Java Basics - Anfänger-Themen 3
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben