So habe ich versucht, ein kleines Programm, das eine Datei in ein Byte-Array eingibt, dann wird dieses Byte-Array in hex, dann binär. Es wird dann mit den binären Werten spielen (ich habe nicht darüber nachgedacht, was ich tun soll, wenn ich zu diesem Zeitpunkt komme) und es dann als eine benutzerdefinierte Datei speichern.Java Große Dateien in Byte-Array lesen Chunk für Chunk
Ich studierte viel Internet-Code und ich kann eine Datei in ein Byte-Array und in Hex, aber das Problem ist, kann ich keine großen Dateien in Byte-Arrays (nicht genügend Arbeitsspeicher).
Dies ist der Code, der
public void rundis(Path pp) {
byte bb[] = null;
try {
bb = Files.readAllBytes(pp); //Files.toByteArray(pathhold);
System.out.println("byte array made");
} catch (Exception e) {
e.printStackTrace();
}
if (bb.length != 0 || bb != null) {
System.out.println("byte array filled");
//send to method to turn into hex
} else {
System.out.println("byte array NOT filled");
}
}
Ich weiß, wie der Prozess sollte nicht ein Totalausfall ist, aber ich weiß nicht, wie das richtig zu codieren.
Der Prozess, wenn Sie interessiert sind:
- Eingabedatei
File
- Lesen Sie den Brocken von Brocken der Datei in ein Byte-Array. Ex. Jeder Datensatz Byte-Array 600 Byte halten
- dass chunk senden, um in einen Hexadezimalwert gedreht werden ->
Integer.tohexstring
- dass Hexadezimalwert chunk Senden in einen binären Wert gemacht werden ->
Integer.toBinarystring
- Mess herum mit der Binärwert
- speichern, um benutzerdefinierte Datei Zeile für Zeile
Problem :: ich weiß nicht, wie man eine große Datei in einen Byte-Array chunk von Klumpen drehen verarbeitet werden. Jedwedes Hilfe wird geschätzt werden, danke für das Lesen :)
Wie groß ist die Datei? –
irgendwo um 7GB – h0lmesxx
Betrachten Sie ['FileInputStream # lesen (byte [] b)'] (https://docs.oracle.com/javase/8/docs/api/java/io/FileInputStream.html#read-byte :EIN-). Dann können Sie angeben, wie viele Bytes gleichzeitig gelesen werden sollen. – 4castle