Anwendung extern starten.GNUPG Batch WIN vs. Linux
Matthias
- java
Hallo NG,
ich starte eine GPG Batch-Befehl um eine TXT-Datei zu verschlüsseln. Unter WIN läuft alles seit Jahren problemlos. Jetzt muss ich das ganze nach Linux portieren.
Manuell läuft auch unter LINUX der Batch-Befehl. Aus dem Programm läuft er zwar durch. Schreibt aber die verschlüsselte Datei nicht. Die Streams geben unter beiden OSs einen Output aus.Vielleicht hat ja hier jemand eine Idee dazu.
Vielen Dank im voraus.
Matthias
[CODE]
static synchronized String verschluesseln(String paradatei, String paragnupg, String paraexport) throws Exception
{
try
{
java.io.File datei1 = new java.io.File(paradatei);
java.io.File datei2 = new java.io.File("");
if (paraexport.length() > 0) { datei2 = new java.io.File(paraexport.substring(0,(paraexport.length()-3))+"tmp");}
else { datei2 = new java.io.File(paradatei.substring(0,(paradatei.length()-3))+"tmp");}
java.io.RandomAccessFile br = null;
Runtime rt = null;
Process prozess = null;
StringBuffer puffer = new StringBuffer();
String zeile = null;
String kommando = "";
rt = Runtime.getRuntime();
kommando = paragnupg+" --batch --yes --passphrase-fd 0 -cao "" + datei2 + "" "" + datei1 + """;
prozess = rt.exec( kommando);
java.io.BufferedOutputStream bos = new java.io.BufferedOutputStream( prozess.getOutputStream());
System.out.println("OPS: " + String.valueOf(prozess.getOutputStream()));
bos.write( ("ITINIT"+"\n").getBytes());
bos.flush();
System.out.println("bos: "+ String.valueOf(bos));
prozess.waitFor();
br = new java.io.RandomAccessFile( datei2, "r");
do
{
zeile = br.readLine();
System.out.println(zeile);
if( zeile == null) break;
puffer.append( zeile);
puffer.append( "\r\n");
} while( true);
br.close();
System.gc();
if( puffer.length() > 0) { return(puffer.toString());}
else { return(paradatei);}
}
catch(Exception exc){exc.printStackTrace();return(paradatei);}
}
[/CODE]
Ich grüsse den Cosmos,
Manuell läuft auch unter LINUX der Batch-Befehl. Aus dem Programm läuft er zwar durch. Schreibt aber die verschlüsselte Datei nicht. Die Streams geben unter beiden OSs einen Output aus.Vielleicht hat ja hier jemand eine Idee dazu.
Ohne den Code gelesen zu haben (kann kein Java) tippe ich darauf, das dein Programm keine Schreibrechte hat
Möge das "Self" mit euch sein
Erledigt.
Falls jemand mal vor dem gleichem Problem steht.
Wenn man die Ausgabe-Datei nicht angibt, schreibt er unter Win automatisch eine dateiname.asc. Unter Linux eine dateiname.ext.asc.
Nicht schön, aber so läuft es.
Grüße Matthias