Scheherasade Geschrieben 3. Januar 2006 Geschrieben 3. Januar 2006 Hallo! Das ist mein erster Beitrag und ich bin auch noch kein Java-Profi. Ich habe ein paar Bild-Dateien auf meiner Festplatte und wollte gerne das Datum wissen, wann sie erstellt wurden. Nun habe ich schon im Internet gesucht, aber um das mit Java zu machen habe ich nichts gefunden. Nur mit PHP, Javascript oder C und C++, aber das brauche ich nicht. Mein Programm weiß schon wo es selbst ist und wo die Bilder sind. Es kann die Bilder auch nehmen und zu einem Server schicken. Aber ich bräuchte noch das Erstellungsdatum der Bilder, damit sie nicht doppelt und dreifach auf dem Server liegen. Das ist meine Frage::confused: Wie kann man aus einer Datei das Erstellungsdatum auslesen? Scheherasade Zitieren
kingofbrain Geschrieben 3. Januar 2006 Geschrieben 3. Januar 2006 Servus, java.io.File bietet Dir nur die Information der letzten Änderung, vielleicht hilft Dir das was: java.io.File.lastModified() Das Erstellungsdatum wirst Du in meinen Augen mit Java-Boardmitteln nicht hinbekommen. Schau mal bei Apache in den diversen Commons-Bibliotheken, vielleicht bieten die sowas plattformabhängig an. Oder Du gehst über Runtime.exec() für jede Plattform speziell mit OS-Boardmitteln dran. Peter Zitieren
Scheherasade Geschrieben 3. Januar 2006 Autor Geschrieben 3. Januar 2006 OK. Mit lastModified() geht es. Allerdings weiß ich jetzt nicht, wie ich das Datum mit der Datei zusammen an den Server schicken soll. Weil das Datum ist ja jetzt getrennt von der Datei. Zitieren
perdian Geschrieben 3. Januar 2006 Geschrieben 3. Januar 2006 Allerdings weiß ich jetzt nicht, wie ich das Datum mit der Datei zusammen an den Server schicken soll.Wie schickst du denn jetzt die Datei an welchen Typ Server? Zitieren
kingofbrain Geschrieben 4. Januar 2006 Geschrieben 4. Januar 2006 Wenn ich richtig vermute, was Du machen willst, sollte Dir die folgende Klasse das tun: public class MyFunnyDateObject { private long lastModified; private byte[] data; public MyFunnyDateObject(long lastModified, byte[] data) { this.lastModified = lastModified; this.data = data; } public long getLastModified() { return lastModified; } public byte[] getData() { return data; } } [/PHP] Ansonsten schliesse ich mich der Frage von perdi an. Peter Zitieren
Scheherasade Geschrieben 4. Januar 2006 Autor Geschrieben 4. Januar 2006 Ich sende es mit post an den Server. Ich habe dazu den HttpClient von Jakarta benutzt. Das geht gut. Aber ich kann das Datum nicht mehr an die Multipart-Verbindung anhängen, weil er nur den Namen und die ganze Datei zulässt. Zitieren
kingofbrain Geschrieben 4. Januar 2006 Geschrieben 4. Januar 2006 Aber Du kannst doch bei Post einer anderen Variable die Grösse der Datei mitteilen, oder? Es handelt sich doch prinzipiell um Daten aus einem Form. Peter Zitieren
perdian Geschrieben 4. Januar 2006 Geschrieben 4. Januar 2006 Aber ich kann das Datum nicht mehr an die Multipart-Verbindung anhängen, weil er nur den Namen und die ganze Datei zulässt.Multipart hat unter anderem deshalb seinen Namen, weil das Format die Möglichkeit bietet mehrere Datenteile (multiple parts halt) zu senden. Was spricht dagegen zwei verschiedene Parts zu senden?! Einer enthält die eigentlichen Daten, der zweite die Meta-Informationen in einem standardisierten Format. Mal ganz abgesehen davon, dass das Datum (und andere Werte) natürlich auch als ganz normale POST oder GET Parameter mit übertragen werden können. Zitieren
Scheherasade Geschrieben 5. Januar 2006 Autor Geschrieben 5. Januar 2006 Also ich habe eine Funktion die heißt "schicken". In der mache ich alles um die Daten zu übertragen. Zuerst kommt eine Schleife (unwichtig). Dann erzeuge ich ein Objekt vom HttpClient und dann das post: MultipartPostMethod post = new MultipartPostMethod(url); Bis dahin ist alles klar. Jetzt kommt mein Problem: Das habe ich bisher gemacht post.addParameter(liste[i].getName(), liste[i]); (Die Liste ist eine Fileliste, aber das wisst ihr vielleicht selber) Das ging bisher auch ganz gut. Ich habe noch ein bißchen Schmu drumherum. (try und catch) Und ich rufe auch noch den Server: int result = client.executeMethod(post); Aber wenn ich versuche das Datum mit anzuhängen meckert er rum. post.addParameter(liste[i].getName(), datum[i], liste[i]); Hier sein nettes Sprüchchen: The method addParameter(String, String) in the type MultipartPostMethod is not applicable for the arguments (String, GregorianCalendar, File) Jedes Datum der Dateien habe ich in ein Array gepackt static GregorianCalendar[] datum; OK. Mal abgesehen davon, dass ich gerade bemerkt habe, dass mein datum leer ist. Wo muss ich das denn nun hintun, damit er das mitsendet? Zitieren
Pinhead Geschrieben 5. Januar 2006 Geschrieben 5. Januar 2006 Hi also hiermit Code: post.addParameter(liste.getName(), liste); Erstellst du einen Parameter der den Namen der Datei hat und deren Inhalt als Wert. Um das Datum anzufügen musst du etwas ähnliches machen post.addParameter("Parameternamen für das Datum", datum[i]); Dann müsstest du an deinen Post 2 Parameter angehängt haben Zitieren
perdian Geschrieben 5. Januar 2006 Geschrieben 5. Januar 2006 The method addParameter(String, String) in the type MultipartPostMethod is not applicable for the arguments (String, GregorianCalendar, File)Natürlich! Mach dir klar, was du machst und was erwartet wird. AddParameter kann nur zwei Argumente als Parameter auswerten: Den Namen des Parameters, der gesetzt werden soll und dessen Wert - mehr nicht. Das liegt an der Funktionsweise des HTTP Protokolls. HTTP kennt weder Java, noch Objekte. Ein Calendar Objekt kannst du daher über HTTP nicht so, wie es ist übertragen. Mach dir klar, das HttpClient nur ein Java Aufsatz ist um schnell und komfortabel HTTP Requests zu erzeugen - nicht um Java Objekte oder Objektgraphen zu versenden. Erst wenn du verstanden hast, wie HTTP funktioniert, was das Multipart Format wirklich ist und was du mit dem HttpClient eigentlich wirklich machst wirst du eine Lösung für dein Problem finden. Vorher ist es nur Rumstochern im Sumpf. Du wirst also deine Datums-Informationen, um sie über HTTP versenden zu können, zunächst in eine Textform überführen müssen, die du dann wiederrum auf dem Server wieder auswertest un din Objekte zurücktransferierst, mit denen du dann wieder weiterarbeiten kannst. Zitieren
Scheherasade Geschrieben 9. Januar 2006 Autor Geschrieben 9. Januar 2006 Jetzt hat es KLICK gemacht. Ich habe immer gedacht, das ich mit addParameter alle auf einmal anhängen kann. Aber es ist ja so das ich immer einen anhänge und mit einem neuen addparameter noch einen dazu machen kann. Da war wieder ein ganz schön großes Brett vor meinem Kopf! Danke für die Hilfe! Jetzt ist alles klar! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.