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
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
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