Hallo,
ich stehe seit gestern vor einem Problem, welches ich einfach nicht lösen kann.
Ich möchte eine 6MB große Datei mit Regex durchsuchen - und da ist eben mein Problem.
Zudem ist dies eine exe datei. Und ich möchte die Bytes vergleichen (heißt eine einfache umwandlung in String ist auch nicht möglich.)
Bei C# habe ich dies einfach geöffnet:
Also erstmal das ganze in ein Byte-Array geladen und das ganze danach byte für byte in ein String (im Hex-Format) umgewandelt.
Ging bei C# in wenigen Sekunden.
Das gleichte versuchte ich auch in Java:
Das ganze funktioniert auch - nur bei 6GB ist es unheimlich langsam (Würde mehere Stunden dauern).
Ein StreamBuilder ging leider nicht - heap Exception, klar 6MB in speicher laden...
Nun weiß ich nicht weiter wie ich das ganze durchsuchen soll :/
Liebe Grüße und nen schönen Abend noch ^.^
ich stehe seit gestern vor einem Problem, welches ich einfach nicht lösen kann.
Ich möchte eine 6MB große Datei mit Regex durchsuchen - und da ist eben mein Problem.
Zudem ist dies eine exe datei. Und ich möchte die Bytes vergleichen (heißt eine einfache umwandlung in String ist auch nicht möglich.)
Bei C# habe ich dies einfach geöffnet:
Code:
byte[] exeByte = System.IO.File.ReadAllBytes("meineExe.exe");
string exe_s = ByteToString(exeByte);
private string ByteToString(byte[] ByteArray)
{
System.Text.StringBuilder sb = new StringBuilder();
foreach (byte b in ByteArray)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
return sb.ToString();
}
Also erstmal das ganze in ein Byte-Array geladen und das ganze danach byte für byte in ein String (im Hex-Format) umgewandelt.
Ging bei C# in wenigen Sekunden.
Das gleichte versuchte ich auch in Java:
Java:
String sb = "";
for(byte b : ByteArray)
{
sb += padLeft(Long.toHexString(b), 2, "0");
System.out.print(padLeft(Long.toHexString(b), 2, "0"));
}
return sb;
Java:
public static String padLeft(String s, int n, String form) {
if(s.length() >= n)
return s;
int len = n - s.length();
String f = "";
for(int i = 0; i < len; i++)
{
f += form;
}
return f+s;
}
Das ganze funktioniert auch - nur bei 6GB ist es unheimlich langsam (Würde mehere Stunden dauern).
Ein StreamBuilder ging leider nicht - heap Exception, klar 6MB in speicher laden...
Nun weiß ich nicht weiter wie ich das ganze durchsuchen soll :/
Liebe Grüße und nen schönen Abend noch ^.^
Zuletzt bearbeitet: