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: