Wie bricht man eine Datei in Stücke mit Java?

7

Ich habe eine Art komische Frage zu stellen. Ich muss wissen, wie ich eine bestimmte Datei in kleine kleine Teile mit Java (beliebiger Dateityp) brechen kann. Dann kann ich diese Stücke in eine Anzahl von CD's, Pendrives und Take-Offs bringen. Ich habe es versucht mit dieser Weg

Aber wie die meisten Benutzer sagten, ist das, was ich versuche, auf diese Weise nicht erreichbar. Also entschied ich mich, eine neue Frage zu stellen, um eine korrekte Methode zum Brechen von Dateien zu erhalten.

Wenn ich eine Datei in Stücke zerschneide (rate 30 Stück), muss es möglich sein, sie wieder zusammenzubauen und die ursprüngliche Datei wieder herzustellen. Bitte helfen.

    
Yohan Weerasinghe 02.06.2012, 17:08
quelle

2 Antworten

26

Lesen Sie Teile von Byte in Byte-Array und speichern Sie sie in neuen Dateien, wenn der Puffer voll ist oder das Ende der Datei erreicht ist.

Zum Beispiel (Code ist nicht perfekt, aber es sollte helfen, den Prozess zu verstehen)

%Vor%

myFile.mp4 Größe = 12,7 MB

Nach dem Splitten hatte ich 13 Dateien

  • myFile.mp4.001 - myFile.mp4.012 mit der Größe 1 MB
  • myFile.mp4.013 mit der Größe 806 KB

Wenn Sie diese Dateien zusammenführen möchten, können Sie

verwenden %Vor%

Sie können auch einige zusätzliche Methoden erstellen, um Ihr Leben einfacher zu machen. Zum Beispiel eine Methode, die eine Liste von Dateien erzeugt, die getrennte Teile enthalten, basierend auf dem Namen (und dem Ort) einer dieser Dateien.

%Vor%

Mit dieser Methode können wir mergeFiles Methode überladen, um nur eine der Dateien File oneOfFiles anstelle der ganzen Liste List<File> zu verwenden (wir erzeugen diese Liste basierend auf einer der Dateien)

%Vor%

Sie können diese Methoden auch überladen, um String anstelle von File zu verwenden (wir werden jeden String bei Bedarf in die Datei einfügen)

%Vor%     
Pshemo 02.06.2012, 17:12
quelle
3

Lesen & amp; Schreibe Streams als rohe byte[] . Vermeiden Sie die Text-Streams und Leser.

In Ihrer letzten Frage haben Sie anscheinend die Dateien nach 'Zeile' getrennt. Um dieses Verhalten zu replizieren, wurde einfach eine feste Größe von byte[] zum Lesen verwendet. Beachten Sie sorgfältig die Warnungen in Kommentaren zu Ihrer letzten Frage, um zu überprüfen, wie viele Bytes gelesen werden. A byte[2^16] wird nicht notwendigerweise in einem einzigen Lesevorgang gefüllt.

    
Andrew Thompson 02.06.2012 17:10
quelle

Tags und Links