Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich bin noch immer an meinem Programm wegen meiner WLAN Kamera.
Es funktioniert alles nur ich möchte noch paar Verbesserungen vornehmen.
Jetzt hab ich ein Problem: Ich möchte Daten in eine Excel Datei schreiben und die dann abfragen, das funktioniert auch alles nur ich möchte das mein Programm das Ständig tut weil jetzt muss ich mein Programm erst schließen und neu öffnen das die neuen Daten übernommen werden.
Ich hab einfach keine Ideen mehr was ich machen kann.
Habt ihr vielleicht eine idee?
Java:
if(Label.equals("OK")) // Wird ausgeführt wenn "OK" betätigt wurde
{
try // Versuche
{
// Neuer FileOutputStream um in eine Datei zu speichern
FileOutputStream schreibeStrom = new FileOutputStream(Datei);
// Zusammensetzen des Strings der gespeichert werden soll
text = (IPKamera.getText() + ";" + KPasswort.getText()) + ";"
+ KBenutzer.getText() + ";" + DateiPfad.getText() + ";";
// Solange wiederholen bis ganzer String geschrieben ist
for(int j=0; j < text.length(); j++)
{
schreibeStrom.write((byte)text.charAt(j)); // Zeichen des Strings wird geschrieben
}
schreibeStrom.close(); // Verbindung zur Datei schließen
}
catch(Exception ex) // Bei einem Fehler
{
ex.printStackTrace(); // Fehler in Konsole ausgeben
}
dispose(); // Fenster schließen
}
Java:
public void CSVLesen() // Methode CSVLesen
{
try // Versuche
{
// BufferedReader erstellen der aus der Datendatei ließt welche mit "Datei" übergeben wird
BufferedReader br = new BufferedReader(new FileReader(Datei));
while (br.ready()){ // Solange ausführen wie Daten im BufferedReader sind
// Einzelne Einträge trennen und dem Array "Daten" hinzufügen
Daten = br.readLine().split(";");
Die einfachste Möglichkeit wäre wohl eine Schleife in einem eigenen Thread, die ständig fragt, ob sich das Änderungsdatum der Datei geändert hat... aber warte mal, ob vielleicht noch jemand einen eleganteren Vorschlag hat...
Die einfachste Möglichkeit wäre wohl eine Schleife in einem eigenen Thread, die ständig fragt, ob sich das Änderungsdatum der Datei geändert hat... aber warte mal, ob vielleicht noch jemand einen eleganteren Vorschlag hat...
Verständlich. Ich habe auch erst vor einem Jahr mit Java angefangen und als "Anfänger" sind Threads und deren Umsetzung noch echt schwer zu verstehen Versuch einfach mal unabhängig von deinem Programm ein bisschen mit Threads herumzuspielen und bau es dann in dein eigentliches Programm ein
Ich hab das jetzt mal programmiert wie ich es mir so gedacht habe.
Es funktioniert auch aber er erhöht x IMMER um 1, kann das sein das bei dem Datenformat noch die Milliseksunden beachtet werden? Sie werden aber nicht ausgegeben.
Hat jemand einen vorschlag oder idee?
Java:
import java.io.*;
import java.util.Date;
import java.text.DateFormat;
public class feilabfrage
{
public static void main (String[] args)
{
String zeit;
long ts;
int x=0;
File myFile=new File("C:/Users/Melanie/workspace/WLAN/bin/wlankamera/Einstellungen.csv");
DateFormat df = DateFormat.getDateTimeInstance();
ts=myFile.lastModified();
zeit = df.format(new Date(ts));
System.out.println(zeit);
while(true){
String zeitt;
long tss;
File myFilee=new File("C:/Users/Melanie/workspace/WLAN/bin/wlankamera/Einstellungen.csv");
DateFormat dff = DateFormat.getDateTimeInstance();
tss=myFilee.lastModified();
zeitt = dff.format(new Date(tss));
System.out.println(zeitt);
if(zeit!=zeitt){
x=x+1;
System.out.println(x);
}
}}
}
danke das hat funktioniert nur hab ich meine abfrage jetzt noch nicht 100%, nach 1 änderung erhöht er mir dann die ganze zeit x. muss da mal weiter schauen
Ja und das versuch ich gerade aber ich bekomm keine schlaue lösung hin, ich bin gerade dran das ich wieder eine neue variable hinzufüge... aber das kann es doch nicht sein
Gibts nicht einen leichten/schnellen befehl?
Die Zahl die bei file.lastModified() zurückgegeben wird ist die Anzahl der Millisekunden seit 1970.
Die Zahl, die bei System.currentTimeMillis() zurückgegeben wird, ist die Anzahl der Millisekunden seit 1970.
Die kann man prima vergleichen. Der Kern ist dann sowas wie
Java:
long previousModificationTime = file.lastModified();
while (true)
{
if (file.lastModified() != previousModificationTime)
{
// Mach irgendwas mit der Datei...
...
previousModificationTime = file.lastModified();
}
warteEinenMoment();
}
Oder hier in ein Testprogrämmchen eingebettet:
Java:
import java.io.*;
import java.util.concurrent.*;
import java.util.*;
interface FileModificationListener
{
void fileModified(File file);
}
class FileObserver
{
private File file;
private long interval = 0;
private List<FileModificationListener> fileModificationListeners =
new CopyOnWriteArrayList<FileModificationListener>();
public FileObserver(File file, long interval)
{
this.file = file;
this.interval = interval;
startThread();
}
private void startThread()
{
Thread thread = new Thread(new Runnable()
{
private long previousModificationTime = -1;
public void run()
{
previousModificationTime = file.lastModified();
while (true)
{
if (file.lastModified() != previousModificationTime)
{
notifyFileModificationListeners();
previousModificationTime = file.lastModified();
}
try
{
Thread.sleep(interval);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
return;
}
}
}
});
thread.setDaemon(true);
thread.start();
}
public void addFileModificationListener(FileModificationListener fileModificationListener)
{
fileModificationListeners.add(fileModificationListener);
}
public void removeFileModificationListener(FileModificationListener fileModificationListener)
{
fileModificationListeners.remove(fileModificationListener);
}
private void notifyFileModificationListeners()
{
for (FileModificationListener fileModificationListener : fileModificationListeners)
{
fileModificationListener.fileModified(file);
}
}
}
class TestFileModificationListener implements FileModificationListener
{
public void fileModified(File file)
{
System.out.println("Modified: "+file);
}
}
public class FileObserverTest
{
public static void main (String[] args)
{
File file=new File("C:/Test.txt");
FileObserver fileObserver = new FileObserver(file, 500);
fileObserver.addFileModificationListener(new TestFileModificationListener());
// Prevent the daemon thread from dying...
while (true);
}
}
FileModificationListener wie gewünscht implementieren und in den FileObserver stecken, dann wird man benachrichtigt.