Hallo,
ist es möglich den Parameter -Xmx1024m, welcher es ermöglicht das Programm mit 1024 MB Arbeitsspeicher auszuführen mit in ein JAR-File geben, so dass die Applikation immer soviel Speicher bekommt? Benötige dies leider wegen aufwendigen String-Operationen...
Danke.
Buffer b = myBuffer;
b.position(b.capacity() - 1);
b.flip();
public static String hash(File input) throws Exception
{
MessageDigest md=MessageDigest.getInstance("SHA-256");
FileInputStream fis=new FileInputStream(input);
int br=0;
byte[] buf=new byte[1024];
while((br=fis.read(buf))!=-1)
{
md.update(buf, 0, br);
}
fis.close();
byte[] output=md.digest();
return ToolKit.byteArrayToHexString(output);
}
// Anhand wieviel Speicher zur Verfügung steht.
String min = ...;
String max = ...;
String userdir = System.getProperty("user.dir");
// Konsolenstring
String cmd = "java -Xms"+min+"m -Xmx"+max+"m -jar \""+userdir+"\\deineJar.jar\"";
try {
// Konsolenaufruf mit Stringeingabe
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
}
// Hier musst du die aktuelle Anwendung beenden mit z.B System.exit()
Frag : warum packst du dir 100MB in den RAM ?
Cipher hat eine Methode die sich update(byte[]) nennt. Jetzt liest du einfach wie gewohnt mit nem Buffer das File ein jagst es gleich durch update(byte[]).
Am Ende noch das doFinal(byte[]) und gut ist.
Java:public static String hash(File input) throws Exception { MessageDigest md=MessageDigest.getInstance("SHA-256"); FileInputStream fis=new FileInputStream(input); int br=0; byte[] buf=new byte[1024]; while((br=fis.read(buf))!=-1) { md.update(buf, 0, br); } fis.close(); byte[] output=md.digest(); return ToolKit.byteArrayToHexString(output); }
public static void encryptBlowfish(File inputFile) throws Exception {
// Schluesselgenerator für 'Blowfish' erstellen
KeyGenerator keygenerator = KeyGenerator.getInstance("Blowfish");
// Schluessel erzeugen
SecretKey secretkey = keygenerator.generateKey();
// Chiffre erstellen
Cipher cipher = Cipher.getInstance("Blowfish");
// Chiffre initialisieren
cipher.init(Cipher.ENCRYPT_MODE, secretkey);
FileInputStream fis = new FileInputStream(inputFile);
// Text verschluesseln
int br = 0;
byte[] buf = new byte[1024];
while ((br = fis.read(buf)) != -1) {
cipher.update(buf, 0, br);
}
fis.close();
}