Dateiverwaltung in Java || Ans Internet senden
lima-city → Forum → Programmiersprachen → Java
aufruf
backen
beitrag
buffer
byte
catch
datei
eindeutig beschrieben
fehler
funktion
gruss
information
inhalt
methode
mglichkeit
neuling
null
schauen
test
zeile
-
Hallo, ich bin ein totaler neuling in Java, und wollte nun gerne wissen,
wie kann ich mit Java eine Datei auf dem Lokalen Computer öffnen und an das ende in einer neuen Zeile dies hineinschreiben?
das;soll;in;die;Datei
dann soll die Datei wieder gespeichert werden.
und
Wie kann ich Informationen an eine Internetseite senden?
Ich wollte es dafür nutzen:
Ich sende den Inhalt einer Datei an eine Seite im www
dann wird auf der seite (PHP) für jede Zeile etwas ausgeführt.
---------
Meine Anwendung wird nicht als Applett, sondern als 'Programm' aufgerufen.
Da ich keine Ahnung habe, würde ich mich freuen, wenn keine Antworten wie schau mal nach offnedatei()
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Moin,
in diesem Fall führen mehrere Wege nach Rom.
Schau Dir einmal das Paket java.io an, dort sind alle notwendigen Klassen vorhanden,
mit denen Du die Arbeit mit Dateien realisieren kannst.
Es gibt zwei Möglichkeiten - eventuell sogar mehr.
a) Du liest die komplette Datei aus und speicherst den Inhalt,
und schreibst den gesamten Inhalt mit einer neuen Zeile wieder in die Datei.
In diesem Fall empfehle ich Dir BufferedReader/BufferedWriter.
b) Du nutzt die Klasse RandomAccessFile und setzt den Pointer ans Ende der Datei, fügst dort einfach Deine gewollte Zeile hinzu und speicherst das Ganze ab.
Entsprechende Literatur diesbezüglich liefert die Javainsel:
http://www.galileodesign.de/openbook/javainsel5/javainsel12_000.htm#Xxx999378
Zum zweiten Problem:
Das ist sehr heikel, da Dein Java-Programm den Browser aufrufen muss.
Und das kann nur geschehen, wenn Du weisst welcher Browser installiert und
wie der Dateipfad dorthin ausschaut.
Nutzt Du das Programm nur private für Dich allein, wird das kein Problem darstellen.
Du müsstest per "Runtime.getRuntime().exec()" den installierten Browser mit der Webseite aufrufen und die nötigen Parameter (Inhalt Deiner Datei) mitliefern.
Das PHP-Script muss das Ganze dann irgendwie verarbeiten.
Ist alles ein bisschen schwierig, aber nichts ist unmöglich.
Hoffe, ich konnte soweit helfen.
Gruss,
Puni -
Nunja ;)
Um es in die letzte Zeile uz schreiben, würde ich den Dateiinhalt erstmal auslesen, und dann alles wieder reinschreiben...
Wir mache 2 Methoden:
//Funktion, um den Dateiinhalt auszulesen. private static String getContentFromFile( String file ) { try { byte buffer[] = new byte[4000]; FileInputStream in = new FileInputStream( file ); int len = in.read( buffer, 0, 4000 ); String back = new String( buffer, 0, len ); in.close(); return back; } catch( IOException e ) { JOptionPane.showMessageDialog(frame, "Fehler:\n"+e ); return ""; } } //Funktion, um den Dateiinhalt zu schreiben. private static void writeInFile( String file, String content ) { try { out = new FileOutputStream( file ); out.write( content.getBytes() ); out.close(); catch( IOException e ) { JOptionPane.showMessageDialog(frame, "Fehler:\n"+e ); return ""; } } //nun zum eigentlichen schreiben public static void main( String[] args ) { String meinString = "ZeileAmEnde"; writeInFile( "file.txt", getContentFromFile( "file.txt")+meinString ); }
Sollte funktionieren, bin mir aber nicht sicher ;)
(Vor allem nicht, ob eine neue Zeile angefangen wird, und wie man das macht =/
EDIT: Toll, puni -.- Hätteste auch noch ein wenig warten können =(
EDIT2: Die einfachen Hochkommata sind doppelte ;)
EDIT3: Ich hab die imports nicht dazu geschrieben.
Wenn du mit Eclipse arbeitest:
Cursor auf nicht gefundene Klasse setzen. Strg+1 drücken, und importieren auswählen
EDIT4:Buffer Variable hinzugefügt.
EDIT5: Och, da war ja noch ein 2tes Problem :D
Ich habe mal auf http://java-forum.org (übrigens gutes Java Forum) einen Gesehen, der Datenbankabfragen per GET gelöst hat.
Könnte sogesehen auch für dich gehen.
Glaub per JBrowser, oder so ... hab nur mal probeweise den Lima-QC ausgelesen^^
Beitrag geändert: 9.11.2006 21:17:11 von benutzernaemelchen -
Tschuldige benutzernaemelchen,
aber ich muss jetzt die einfache Variante vorschlagen *pfeifft unschuldig*
RandomAccessFile ist in diesem Fall absolut am Einfachsten und resourcen-/performancesparend.
Hier wäre ein direkter Link zu solch einer Realisierung:
http://www.galileodesign.de/openbook/javainsel5/javainsel12_001.htm#Rxx747java12001040003F81F0141CC
Tut mir leid, dass ich damit Deinen Code ... eliminiert habe
Gruss,
Puni -
Hallo,
ich habe mich mal mit RandomAccess beschäftigt, habe aber nichts verstanden.
RandomAccess("test.txt", "r");
liefert einen error.
Wie benutze ich das genau um test.txt zu öffnen / auszulesen / zu beschreiben? -
Moin,
verstehe ich nicht, was Du meinst.
In meinem Link ist doch eindeutig beschrieben, wie man einer bestehenden Datei eine Zeile zufügt.
Zum einen heisst es nicht "RandomAccess" sondern "RandomAccessFile".
RandomAccessFile file = new RandomAccessFile("test.txt","rw");
Das "rw" steht für r - read und w - write, sprich, dass Deine angegebene Datei les- und schreibbar ist.
Zum lesen der Datei gibt es die Methode "readLine()", zum Schreiben "writeXXX()".
Schau Dir mal die entsprechende API für RandomAccessFile an, eventuell hilft Dir diese weiter.
Gruss,
Puni -
Hallo,
ich habe nu diesen Code:
RandomAccessFile output = null;
try
{
output = new RandomAccessFile("test.txt", "rw" );
output.seek( output.length() ); // Dateizeiger an das Ende
output.writeChars(neuezeile+ "\n" ); // Zeile schreiben
}
catch ( IOException f ) {
f.printStackTrace();
}
finally {
if ( output != null )
try { output.close(); } catch ( IOException g ) { g.printStackTrace(); }
}
Er schreibt auch in die Datei,
aber nach jedem Zeichen fügt Java ein leerzeichen ein,
also:
das soll rein: Hallo Welt!
das schreibt Java: H a l l o W e l t ! -
Moin,
das ist klar, denn mit output.writeChar() wird jedes Zeichen einzeln hinzugefügt.
Ersetz einfach mal das writeChar() mit writeBytes(), das dürfte den gewünschten Effekt bringen.
Gruss,
Puni
Beitrag geändert: 11.11.2006 0:25:18 von puni -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage