Matthias: Anwendung extern starten.GNUPG Batch WIN vs. Linux

Beitrag lesen

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]