Input/Output CMD-Ausgabe abfangen und in Datei speichern

Olli123

Mitglied
Hallo!

Habe eine Frage bezüglich der CMD-Ausgabe. Kann man diese mit dem Standart-Befehl "> C:\verzeichnis\ordner\filename.dateiendung" abfangen bzw. abspeichern. Habe nämlich folgende Methode, jedoch speichert diese nichts ab. Fehlermeldungen kommen aber auch nicht :bahnhof:...

Java:
Process proc = rt.exec("C:\\xampp\\mysql\\bin\\mysqldump -h" + host + "-u " + user + " -p" + pw + " --allow-keywords --add-drop-table --complete-insert --quote-names "  + "database" + " > C:\\verzeichnis\\ordner\\exportfile.sql");

host, user und pw stellen dabei variablen, die ich vorher als String mit den enstprechenden Zugangsdaten initialisiert habe. :rtfm:

Habe schon gegoogled und die Sufu benutzt, kam aber auf keine Antwort.


Es wäre super, wenn mir hier ein wenig weiterhelfen könnte.

Alternativ habe ich mir schon etwas ausgedacht bzw. zusammengegoogled mit einem InputStream(Reader) und nem Filewriter, dass jedoch noch nicht so funktioniert wie ich das will...


Viele Grüße und auf eine Antwort hoffend

Olli123
 
B

bERt0r

Gast
" -p" + pw
Da is kein Leerzeichen nach dem p, gib mal deinen String aus den du dir baust und schau ob der in der CMD das macht was du willst
 

Olli123

Mitglied
der string funktioniert in cmd ohne probleme. habe es nämlich genau so abgtippt und in cmd einfgefügt, halt mit den entsprechenden variablen-werten.

das mit dem leerzeichen muss so sein. also sollte es von der syntax her eigentlich passen. die frage ist ob java das zulässt, dass cmd etwas schreiben soll... ???:L
 

TheDarkRose

Gesperrter Benutzer
Lass das > blabla einfach weg und hol dir per getInputStream die Ausgabe deines Prozesses. Das kannst dann nach belieben weiterverarbeiten und auch in einer Datei speichern.
 

Olli123

Mitglied
hmmm habe das dann so als alternative, aber da fehlt zum teil immer ein Bisschen was, sodass das file nicht verwendbar ist:

Java:
public void getLocalDatabase()
    {
        String host = "host",user="user",pw="pw";
        File dump = new File("database\\file.sql");
        FileWriter fw = null;
        try
        {
            fw = new FileWriter(dump);
            Runtime rt = Runtime.getRuntime();
            Process child = rt.exec("C:\\xampp\\mysql\\bin\\mysqldump -h" + host + "-u " + user + " -p" + pw + " --allow-keywords --add-drop-table --complete-insert --quote-names "  + "database");
            InputStream in = child.getInputStream();
            InputStreamReader xx = new InputStreamReader(in,"UTF-8");
            char[] chars = new char[1024];
            int ibyte = 0;
            while((ibyte = xx.read(chars))>0)
            {
                System.out.println(chars);
                fw.write(chars);
            }
            fw.close();
        }
        catch (Exception e) {
        e.printStackTrace();
        }
    }


Aber wo liegt da der Fehler... Es fehlt immer am Ende einer Datenbank ein gewisser Teil... :shock:
 

Michael...

Top Contributor
Hab den Thread nur überflogen aber folgendes solltest Du ändern:
[JAVA=15]while((ibyte = xx.read(chars))>0)[/code]
Code:
while((ibyte = xx.read(chars))[SIZE="4"][B]!=-1[/B][/SIZE])

Eventuell wird ja ein Teil auch über den Errorstream ausgegeben. Kannst ja dieses auch mal auslesen bzw. in die Datei umleiten:
Code:
   ...   > meineDatei.xxx 2>&1
 

Olli123

Mitglied
Eventuell wird ja ein Teil auch über den Errorstream ausgegeben. Kannst ja dieses auch mal auslesen bzw. in die Datei umleiten:
Code:
   ...   > meineDatei.xxx 2>&1

Wie meinst du das genau? verstehe den quellcode leider nicht. und warum wird ein teil über nen errorstream ausgegeben? ich sehe in dem file, welches er anlegt immer nur, dass er mitten bei den datensätzen abbricht und dann einfach der nächste satz bzw. die nächste zeile beginnt.

ungefähr so:

SQL:
(bla, bla, bla, bla),(bla, bla, bla,/*!40000 ALTER TABLE `tablename` ENABLE KEYS */;
UNLOCK TABLES;

Das heißt irgendwie fehlt so der letzte abschnitt, der nicht geschrieben wird.... :(


Edit: Habe mir das ganze nochmal genauer angeschaut und habe festgestellt, dass er die sachen nicht zu wenig schreibt, sonder manche Sachen zu viel, also ein zweites Mal schreibt... Die Frage ist nur warum er das macht...


Edit2: Hab die Lösung gefunden... eigentlich ganz logisch wenn man draufkommt... hier die Lösung und danach Erklärung dazu:


Java:
public void getLocalDatabase()
    {
        String host = "host",user="user",pw="pw";
        File dump = new File("database\\file.sql");
        FileWriter fw = null;
        try
        {
            fw = new FileWriter(dump);
            Runtime rt = Runtime.getRuntime();
            Process child = rt.exec("C:\\xampp\\mysql\\bin\\mysqldump " + "-u" + user + " -p" + pw + " --allow-keywords --add-drop-table --complete-insert --quote-names "  + "database");
            InputStream in = child.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(in,"UTF-8"));
            int ibyte = 0;
            while((ibyte = br.read())!= -1)
            {
                fw.write(ibyte);
            }
            fw.close();
        }
        catch (Exception e) {
        e.printStackTrace();
        }
    }


Habe noch aus Schönheitsgründen einen BufferedReader eingebaut.

Erklärung: In der While-Schleife frägt der bufferedReader br mit der Methode
Java:
br.read()
ab ob noch Zeichen übrig sind. Dadurch verschiebt sich aber der Curser um eins. Wenn ich dann in der Schleife nochmal
Java:
br.read()
abfrage, kommt nur die Hälfte an. Um das zu umgehen weist man mit
Java:
(ibyte = br.read())
ibyte als Speicher für das sonst verloren gegangene Zeichen zu. Dieses wird dann in der while-Schleife in das File geschrieben. Und schon funktioniert es =)


Trotzdem vielen dank an euch Alle!!!

Grüße

Olli123
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela Gemittelte Ausgabe von Buchstaben Allgemeine Java-Themen 11
L Event Handling Ausgabe von Radioboxen und befüllen von Comboboxen Allgemeine Java-Themen 1
curranux Ausgabe als Textdatei schreiben. Allgemeine Java-Themen 2
Master3000 Komisches Zeichen als Ausgabe in der Konsole Allgemeine Java-Themen 20
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
B Game of life Ein und Ausgabe Configurations Datei Allgemeine Java-Themen 17
Exdroid BlueJ Wie bekomme ich die Ausgabe in eine TXT Datei? Allgemeine Java-Themen 2
M Input/Output CMD Ausgabe als ButtonEvent Allgemeine Java-Themen 5
Tausendsassa Input/Output Problem mit der gleichzeitigen Ausgabe zweier Threads Allgemeine Java-Themen 8
S 2-spaltige Ausgabe als Tabelle ausgeben Allgemeine Java-Themen 12
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
B JFrame Text Ausgabe Allgemeine Java-Themen 7
D Variablen Ausgabe bzw. einlese Fehler Allgemeine Java-Themen 7
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
J Ausgabe nach Excel Allgemeine Java-Themen 1
balwan Unverständlichkeit einer Ausgabe Allgemeine Java-Themen 4
K Input/Output Ausgabe in Textdatei Allgemeine Java-Themen 7
B Barcode4j Ausgabe Formatieren Allgemeine Java-Themen 3
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
H Scanner: Ausgabe erst nach Abbruch Allgemeine Java-Themen 8
K Methoden Ausgabe erfolgt nicht Allgemeine Java-Themen 6
T Ausgabe falsch! Allgemeine Java-Themen 5
W Input/Output Ausgabe eines Statements Allgemeine Java-Themen 5
P Falsche Ausgabe Allgemeine Java-Themen 5
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
D Ausgabe von C# Konsolenanwendung lesen Allgemeine Java-Themen 5
P Pdf ausgabe Allgemeine Java-Themen 3
schlingel Process - Ausgabe leer Allgemeine Java-Themen 5
C Ausgabe unklar Allgemeine Java-Themen 2
J Applet Ausgabe beim Speichern ausblenden Allgemeine Java-Themen 4
Rudolf Java Ausgabe einer Texttabelle im Prompt Allgemeine Java-Themen 4
P Ausgabe der berechneten Fakultaet Allgemeine Java-Themen 12
M Ausgabe in Datei zum Ausdruck Allgemeine Java-Themen 2
E formartierte Ausgabe zur Laufzeit Allgemeine Java-Themen 2
D Bildschirm Flackert bei Ausgabe Allgemeine Java-Themen 4
K Windows Fehlerkanal -> Ausgabe in Datei Allgemeine Java-Themen 6
H Ausgabe von zwei Textfeldern Allgemeine Java-Themen 3
R log4j - Ausgabe der Logs Allgemeine Java-Themen 3
L in zufälligen Sekunden Ausgabe machen Allgemeine Java-Themen 2
W Ausgabe beschleunigen? Allgemeine Java-Themen 3
O Backslashes werden in der Ausgabe nicht übernommen Allgemeine Java-Themen 5
X Ausgabe auf JEditorPane Allgemeine Java-Themen 5
B Ausgabe auf der Konsole bei Nebenläufigkeit, Threads und Synchronisation Allgemeine Java-Themen 8
A Ausgabe in OpenOffice Calc oder pdf Allgemeine Java-Themen 3
T Ausgabe in txt.Datei speichern Allgemeine Java-Themen 23
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
M Consolen Ausgabe Allgemeine Java-Themen 3
G Ausgabe mit tag Allgemeine Java-Themen 3
W Ausgabe von Fließkommazahlen formatieren Allgemeine Java-Themen 2
D Ausgabe HTML-Seite Allgemeine Java-Themen 5
H Externe Prozesse und Inputstreams - ausgabe in JTextArea Allgemeine Java-Themen 3
G Ausgabe in eine txt Datei schreiben? Allgemeine Java-Themen 7
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
J Ausgabe der Quelltext Zeilennummer? Allgemeine Java-Themen 12
B serlvet system.out ausgabe Allgemeine Java-Themen 4
B Ausgabe auf stdout "löschen" und dafür neue Ausgab Allgemeine Java-Themen 10
X e.printStackTrace Ausgabe in Datei umleiten? Allgemeine Java-Themen 14
B Ausgabe mit print wird verzögert Allgemeine Java-Themen 9
D Dateien und ordner ausgabe Allgemeine Java-Themen 5
M Rekursive Ausgabe einer linkedList Allgemeine Java-Themen 8
M Ausgabe in Console formatieren`? Allgemeine Java-Themen 12
D Seltsame Ausgabe beim zusammenführen zweier Dateien Allgemeine Java-Themen 14
I Composite Pattern für Ausgabe von Ausdruck Allgemeine Java-Themen 3
H falsche ausgabe Allgemeine Java-Themen 15
S Datei Ausgabe Allgemeine Java-Themen 4
T Fehlersuche bzw. woher kommt diese ausgabe? Allgemeine Java-Themen 2
D Formatierte Ausgabe vom ProcessBuilder Allgemeine Java-Themen 4
S Endlos-Schleife bei Ausgabe von ArrayList Allgemeine Java-Themen 6
L Ausgabe auf GUI verzögert Allgemeine Java-Themen 2
D Die Ausgabe von Tidy in eine Datei umleiten Allgemeine Java-Themen 3
R Vorzeichen bei der Ausgabe Allgemeine Java-Themen 7
G Problem mit Ausgabe-Kanälen Allgemeine Java-Themen 2
T Ausgabe bei Struktogrammen Allgemeine Java-Themen 2
G JTextField: Feld für Ausgabe von Meldungen Allgemeine Java-Themen 14
B Formatierte Ausgabe Allgemeine Java-Themen 3
G Einlesen der Ausgabe eines Shellskripts mit Java Allgemeine Java-Themen 2
B Fehler bei Ausgabe in Datei Allgemeine Java-Themen 11
G Ausgabe Allgemeine Java-Themen 9
CodingBerlin Mouse Clicks abfangen Allgemeine Java-Themen 4
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
M Swing java command line abfangen Allgemeine Java-Themen 8
C Swing Abfangen von Fehlern in GUI Allgemeine Java-Themen 4
R Threads Exceptions von Threads abfangen im ThreadPool Allgemeine Java-Themen 5
C Kopiervorgang abfangen Allgemeine Java-Themen 10
T Methoden In Konsole tasten abfangen? Allgemeine Java-Themen 4
B Windows Shutdown abfangen Allgemeine Java-Themen 10
D Nullpointer abfangen Allgemeine Java-Themen 7
V JNI Call Crash verhindern (abfangen) Allgemeine Java-Themen 2
E JAVA URL abfangen und weiterleiten? Filter? Allgemeine Java-Themen 6
F Alle Exceptions abfangen Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben