Java verwendet IO -Stream, um die Segmentierung und Verschmelzung großer Dateien zu realisieren
Die Dateisegmentierung sollte eine praktischere Funktion sein. Wenn Sie beispielsweise eine 3G -Datei haben, die von einem Computer auf einen anderen kopiert werden muss, ist Ihr Speichergerät (z. B. eine SD -Karte) jedoch nur 1 g. Zu diesem Zeitpunkt können Sie die Datei in 3 1G -Dateien ausschneiden, separat kopieren und schließlich die drei Dateien zusammenführen, was das Problem löst. Zum Beispiel haben Sie eine Datei mit Hunderten von m zum Hochladen auf FTP, aber diese FTP beschränkt Ihre einzelne Datei auf 10 m. Zu diesem Zeitpunkt können Sie auch die Dateisegmentierung verwenden, um das Problem zu lösen. Da es geteilt ist, müssen wir uns zusammenschließen, wenn wir es wieder verwenden. Heute werden wir die Fähigkeit der Dateiaufteilung und Verschmelzung durch Java -Code implementieren.
Jetzt werden wir demonstrieren, indem wir eine Datei von meiner Maschine demonstrieren. Das Dateiverzeichnis lautet: e: /clipse-jee-juno-win32.zip (heute werde ich Spaß mit der Sonnenfinsternis haben, die jeder hasst):
Die folgende Abbildung zeigt die Situation vor der Segmentierung:
Die Situation nach der Aufteilung ist:
So teilen Sie Dateien in Java:
// Die Methode der Dateiaufteilung (übergeben Sie den zu spaltenden Dateipfad und die Anzahl der Kopien, die in der Methode aufgeteilt werden sollen) private statische void splitfiledemo (Datei SRC, int m) {if (src.isfile ()) {// die Gesamtlänge der Datei lang l = src.length (); // den Dateinamen String mateiname = src.getname (). Substring (0, src.getName (). Indexof (".")) Abrufen; // Die Datei -Suffix String endname = src.getname (). Substring (src.getName (). LastIndexof (".")); System.out.println (Endname); InputStream in = null; try {in = new FileInputStream (SRC); für (int i = 1; i <= m; i ++) {stringBuffer sb = new StringBuffer (); sb.Append (src.getParent ()). append (Dateiname) .Append ("_ data"). append (i) .Append (Endname); System.out.println (sb.toString ()); Datei Datei2 = neue Datei (sb.toString ()); // Erstellen Sie den Ausgabestream zum Schreiben von Dateien outputStream out = new FileOutputStream (Datei2); int len = -1; byte [] bytes = neues byte [10*1024*1024]; while ((len = in.read (bytes))! =-1) {out.write (bytes, 0, len); if (file2.Length ()> (l / m)) {break; }} out.close (); }} catch (Ausnahme e) {e.printstacktrace (); } endlich {try {in.close (); } catch (ioException e) {e.printstacktrace (); }}}} Java verschmelzen Dateien:
// Methode der Dateiüberführung (im Dateipfad zum Zusammenführen) private statische void JoinFiledemo (String ... src) {for (int i = 0; i <src.length; i ++) {Dateidatei = neue Datei (SRC [i]); String Dateiname = Datei.getName (). Substring (0, File.getName (). IndexOf ("_")); String endname = file.getName (). Substring (file.getName (). LastIndexof (".")); StringBuffer sb = new StringBuffer (); sb.append (file.getParent ()). append ("//"). append (Dateiname) .Append (Endname); System.out.println (sb.toString ()); Versuchen Sie {// Lesen Sie den Eingabestream von kleinen Dateien InputStream in = new FileInputStream (Datei); // Schreiben Sie den Ausgabestream von großer Dateidatei2 = Neue Datei (sb.toString ()); OutputStream out = new FileOutputStream (Datei2, true); int len = -1; byte [] bytes = neues byte [10*1024*1024]; while ((len = in.read (bytes))! =-1) {out.write (bytes, 0, len); } out.close (); in.close (); } catch (Ausnahme e) {e.printstacktrace (); }} System.out.println ("Datei merge ist abgeschlossen!");}Ich fand es ziemlich kompliziert, vor dem Schreiben, aber nachdem ich es geschrieben hatte, dachte ich, es wäre genau das. Sie können Ihre Fähigkeiten üben.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!